上传文件已在文档中正确解释.但我想知道相同的内置烧瓶文件上传是否可以用于多次上传.我经历了这个答案,但我无法完成.它说"烧瓶"没有定义.不确定我是否缺少一些要导入的模块,或者我不知道使用getlistflask.request.files的方法.
我的表格如下:
<form action="" method=post enctype=multipart/form-data>
<input type=file name="file[]" multiple>
<input type=submit value=Upload>
</form>
Run Code Online (Sandbox Code Playgroud)
和路线是这样的:
@app.route('/', methods=['GET', 'POST'])
def upload_file():
if request.method == 'POST':
files = request.files.getlist['file[]']
for file in files:
if file and allowed_file(file.filename):
#filename = secure_filename(file.filename)
upload(filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return redirect(url_for('uploaded_file',
filename=filename))
Run Code Online (Sandbox Code Playgroud)
如果我用"file []替换文件"会有效吗?我可以选择多个文件,但烧瓶接受并打印只选择一个文件,只上传一个.看起来我在这里错过了一些愚蠢的东西.
===== EDITED ======
我在上面的路线上编辑了以下建议.
=====加成====
还需要一个函数来保持文件名迭代并保存它.
def upload(filename):
filename = 'https://localhost/uploads/' + filename
Run Code Online (Sandbox Code Playgroud)
并在上面的循环中调用此函数.做完了!
不确定它是否是一个真正的解决方案,但它确实做到了.
你要调用getlist的方法request.files(这是一个实例werkzeug.datastructures.MultiDict):
files = request.files.getlist('file')
for file in files:
hande_file(file)
Run Code Online (Sandbox Code Playgroud)
handle_file 可能会像这样实现:
def handle_file(f):
if not allowed_file(f.filename):
return
filename = secure_filename(f.filename)
f.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4442 次 |
| 最近记录: |