我希望将多个文件上传到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)
答案 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))