PythonFlask-WTF文件批量上传示例
Python Flask是一个用于开发Web应用的微型框架,可以方便地构建简单的网站和Web服务。WTForms是一个用于构建Web表单的Python库,可以帮助我们处理表单的验证和渲染。
在Python Flask中,使用Flask-WTF扩展可以轻松地集成WTForms和Flask,实现表单的数据验证和渲染。文件上传是常见的Web应用功能之一,可以用于用户上传图片、文档等文件。
下面是一个使用Python Flask和Flask-WTF扩展实现文件批量上传功能的示例代码:
from flask import Flask, render_template, request
from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
class UploadForm(FlaskForm):
files = FileField('Files', validators=[DataRequired(), FileAllowed(['txt', 'pdf', 'doc', 'docx'])])
@app.route('/', methods=['GET', 'POST'])
def upload():
form = UploadForm()
if form.validate_on_submit():
files = request.files.getlist('files')
filenames = []
for file in files:
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
filenames.append(filename)
return render_template('success.html', filenames=filenames)
return render_template('upload.html', form=form)
if __name__ == '__main__':
app.run(debug=True)
在上面的示例中,首先导入了必要的模块和类。然后,创建了一个Flask应用,并设置了一个密钥用于保护表单数据。
接下来,定义了一个继承自FlaskForm的表单类UploadForm,其中包含一个FileField字段,用于文件上传。在FileField字段中,使用DataRequired验证器确保用户选择了文件,并使用FileAllowed验证器限制文件类型为txt、pdf、doc或docx。
在路由函数upload中,首先实例化了UploadForm表单类,并在GET请求时返回渲染upload.html模板。在POST请求时,通过form.validate_on_submit()判断表单数据是否有效。
如果有效,通过request.files.getlist('files')获取上传的文件列表。然后,遍历文件列表,使用secure_filename函数生成安全的文件名,并使用file.save方法将文件保存在指定的上传文件夹下,并将文件名添加到filenames列表中。
最后,在成功页面模板success.html中,展示上传成功的文件名列表。
需要注意的是,由于文件上传涉及到文件系统的操作,需要在配置中指定一个合适的上传文件夹,如app.config['UPLOAD_FOLDER'] = '/path/to/upload/folder'。
以上就是使用Python Flask和Flask-WTF扩展实现文件批量上传功能的示例代码。你可以根据实际需求进行修改和扩展,来满足不同的业务需求。
