Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用flask上载多个文件_Python_Flask - Fatal编程技术网

如何在python中使用flask上载多个文件

如何在python中使用flask上载多个文件,python,flask,Python,Flask,以下是我上传多个文件的代码: HTML代码: Browse <input type="file" name="pro_attachment1" id="pro_attachment1" multiple> pro_attachment = request.files.getlist('pro_attachment1') for upload in pro_attachment: filename = upload.filename.rsplit("/")[0] d

以下是我上传多个文件的代码:

HTML代码:

Browse <input type="file" name="pro_attachment1" id="pro_attachment1" multiple>
pro_attachment = request.files.getlist('pro_attachment1')

for upload in pro_attachment:
    filename = upload.filename.rsplit("/")[0]
    destination = os.path.join(application.config['UPLOAD_FOLDER'], filename)
    print "Accept incoming file:", filename
    print "Save it to:", destination
    upload.save(destination)
但是它只上传一个文件而不是多个文件。

如何上传 在模板中,您需要在上传输入中添加
mulitple
属性:

<form method="POST" enctype="multipart/form-data">
    <input type="file" name="photos" multiple>
    <input type="submit" value="Submit">
</form>    
此外,您可能需要使用来清除文件名:

# ...
from werkzeug.utils import secure_filename
# ...
    for f in request.files.getlist('photo'):
        filename = secure_filename(f.filename)
        f.save(os.path.join(app.config['UPLOAD_PATH'], filename))
        # ...
您还可以使用此命令生成随机文件名

完整演示 视图:

表格:

模板:

<form method="POST" enctype="multipart/form-data">
    {{ form.hidden_tag() }}
    {{ form.photo(multiple="multiple") }}
    {{ form.submit }}
</form>

{{form.hidden_tag()}}
{{form.photo(multiple=“multiple”)}
{{form.submit}
更多 为了获得更好的上传体验,您可以尝试。

您的代码看起来非常完美。 我认为你犯的唯一错误是分割并取第一个值。 而且我也不知道rsplit(),但是split()对我来说非常适合

HTML代码

<input id="upload_img" name="zip_folder"  type="file" multiple  webkitdirectory  >

pro_附件列表的长度是多少?用户可以选择多个文件。长度取决于他们选择的文件
from flask_wtf import FlaskForm
from wtforms import SubmitField
from flask_wtf.file import FileField, FileAllowed, FileRequired

class UploadForm(FlaskForm):
    photo = FileField('Image', validators=[
        FileRequired(),
        FileAllowed(photos, 'Image only!')
    ])
    submit = SubmitField('Submit')
<form method="POST" enctype="multipart/form-data">
    {{ form.hidden_tag() }}
    {{ form.photo(multiple="multiple") }}
    {{ form.submit }}
</form>
<input id="upload_img" name="zip_folder"  type="file" multiple  webkitdirectory  >