从 WTForms 字段获取上传的文件
Get an uploaded file from a WTForms field
在 Flask 文档中,文件上传示例使用 <input type="file" name="file">
然后 request.files['file']
来获取文件。我正在使用 WTForms FileField。使用 WTForms 而不是自己编写输入时如何获取上传的文件 html?
request.files
是一个字典,其中的键是文件字段的名称。您可以使用 my_form.my_field.name
获取 WTForms 字段的名称。因此,您可以使用 request.files[my_form.my_field.name]
.
访问从该字段上传的数据
您可以使用 Flask-WTF FileField,而不是使用 WTForms FileField。它提供了一个 data
属性,可以为您获取文件数据。 This is described in the documentation.
from flask import url_for, redirect, render_template
from flask_wtf import FlaskForm
from flask_wtf.file import FileField
from werkzeug.utils import secure_filename
class UploadForm(FlaskForm):
file = FileField()
@app.route('/upload', methods=['GET', 'POST'])
def upload():
form = UploadForm()
if form.validate_on_submit():
filename = secure_filename(form.file.data.filename)
form.file.data.save('uploads/' + filename)
return redirect(url_for('upload'))
return render_template('upload.html', form=form)
<html>
<head>
<title>Upload</title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
{{ form.hidden_tag() }}
{{ form.file }}
<input type="submit">
</form>
</body>
</html>
在 Flask 文档中,文件上传示例使用 <input type="file" name="file">
然后 request.files['file']
来获取文件。我正在使用 WTForms FileField。使用 WTForms 而不是自己编写输入时如何获取上传的文件 html?
request.files
是一个字典,其中的键是文件字段的名称。您可以使用 my_form.my_field.name
获取 WTForms 字段的名称。因此,您可以使用 request.files[my_form.my_field.name]
.
您可以使用 Flask-WTF FileField,而不是使用 WTForms FileField。它提供了一个 data
属性,可以为您获取文件数据。 This is described in the documentation.
from flask import url_for, redirect, render_template
from flask_wtf import FlaskForm
from flask_wtf.file import FileField
from werkzeug.utils import secure_filename
class UploadForm(FlaskForm):
file = FileField()
@app.route('/upload', methods=['GET', 'POST'])
def upload():
form = UploadForm()
if form.validate_on_submit():
filename = secure_filename(form.file.data.filename)
form.file.data.save('uploads/' + filename)
return redirect(url_for('upload'))
return render_template('upload.html', form=form)
<html>
<head>
<title>Upload</title>
</head>
<body>
<form method="post" enctype="multipart/form-data">
{{ form.hidden_tag() }}
{{ form.file }}
<input type="submit">
</form>
</body>
</html>