栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

在模板中,你需要

mulitple
在上传输入中添加属性:

<form method="POST" enctype="multipart/form-data">    <input type="file" name="photos" multiple>    <input type="submit" value="Submit"></form>  

然后在查看功能中,上传的文件可以通过列表获取

request.files.getlist('photos')
。循环此列表并在每个项目
(werkzeug.datastructures.FileStorage)
上调用save()方法将它们保存在给定路径中:

import osfrom flask import Flask, request, render_template, redirectapp = Flask(__name__)app.config['UPLOAD_PATH'] = '/the/path/to/save'@app.route('/upload', methods=['GET', 'POST'])def upload():    if request.method == 'POST' and 'photo' in request.files:        for f in request.files.getlist('photo'): f.save(os.path.join(app.config['UPLOAD_PATH'], f.filename))        return 'Upload completed.'    return render_template('upload.html')

此外,你可能需要使用secure_filename()来清洁文件名:

# ...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))        # ...

你也可以使用此方法生成随机文件名。

完整演示
视图:

import os

from flask import Flask, request, render_templatefrom werkzeug.utils import secure_filenameapp = Flask(__name__)  app.config['UPLOAD_PATH'] = '/the/path/to/save'@main.route('/upload', methods=['GET', 'POST'])def upload():    form = UploadForm()    if form.validate_on_submit() and 'photo' in request.files:        for f in request.files.getlist('photo'): filename = secure_filename(f.filename) f.save(os.path.join(app.config['UPLOAD_PATH'], filename))        return 'Upload completed.'    return render_template('upload.html', form=form)

形成:

from flask_wtf import FlaskFormfrom wtforms import SubmitFieldfrom flask_wtf.file import FileField, FileAllowed, FileRequiredclass 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>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/382280.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号