How to upload and save a file using bottle framework

前端 未结 1 1255
余生分开走
余生分开走 2021-01-31 10:59

HTML:

Category: Select a
相关标签:
1条回答
  • 2021-01-31 11:17

    Starting from bottle-0.12 the FileUpload class was implemented with its upload.save() functionality.

    Here is example for the Bottle-0.12:

    import os
    from bottle import route, request, static_file, run
    
    @route('/')
    def root():
        return static_file('test.html', root='.')
    
    @route('/upload', method='POST')
    def do_upload():
        category = request.forms.get('category')
        upload = request.files.get('upload')
        name, ext = os.path.splitext(upload.filename)
        if ext not in ('.png', '.jpg', '.jpeg'):
            return "File extension not allowed."
    
        save_path = "/tmp/{category}".format(category=category)
        if not os.path.exists(save_path):
            os.makedirs(save_path)
    
        file_path = "{path}/{file}".format(path=save_path, file=upload.filename)
        upload.save(file_path)
        return "File successfully saved to '{0}'.".format(save_path)
    
    if __name__ == '__main__':
        run(host='localhost', port=8080)
    

    Note: os.path.splitext() function gives extension in ".<ext>" format, not "<ext>".

    • If you use version previous to Bottle-0.12, change:

      ...
      upload.save(file_path)
      ...
      

    to:

        ...
        with open(file_path, 'wb') as open_file:
            open_file.write(upload.file.read())
        ...
    
    • Run server;
    • Type "localhost:8080" in your browser.
    0 讨论(0)
提交回复
热议问题