Python Bottle多文件上传

时间:2015-07-26 22:46:55

标签: python bottle

我希望将多个文件上传到Bottle服务器。

单个文件上传效果很好,通过将HTML输入标记修改为“多个”,浏览按钮允许选择多个文件。上传请求处理程序仅加载最后一个文件。如何一次性上传所有文件?

我正在尝试的代码:

    from bottle import route, request, run

    import os

    @route('/fileselect')
    def fileselect():
        return '''
    <form action="/upload" method="post" enctype="multipart/form-data">
      Category:      <input type="text" name="category" />
      Select a file: <input type="file" name="upload" multiple />
      <input type="submit" value="Start upload" />
    </form>
        '''

    @route('/upload', method='POST')
    def do_upload():
        category   = request.forms.get('category')
        upload     = request.files.get('upload')
        print dir(upload)
        name, ext = os.path.splitext(upload.filename)
        if ext not in ('.png','.jpg','.jpeg'):
            return 'File extension not allowed.'

        #save_path = get_save_path_for_category(category)
        save_path = "/home/user/bottlefiles"
        upload.save(save_path) # appends upload.filename automatically
        return 'OK'

    run(host='localhost', port=8080)

1 个答案:

答案 0 :(得分:4)

mata's suggestion有效。您可以通过request.files上的getall()来获取上传文件的列表。

@route('/upload', method='POST')
def do_upload():
    uploads = request.files.getall('upload')
    for upload in uploads:
        print upload.filename
    return "Found {0} files, did nothing.".format(len(uploads))