【发布时间】:2020-09-02 18:11:56
【问题描述】:
我正在尝试使用 MultipleFileField 从 Flask 中的请求中获取和保存多个文件。但问题是我无法遍历它。我的意思是:
表单类
class TestForm(FlaskForm):
user_id = IntegerField('user_id', validators=[DataRequired()])
name = StringField('name', validators=[DataRequired()])
description = StringField('description', validators=[DataRequired()])
category_id = IntegerField('category_id', validators=[DataRequired()])
date_of_purchase = DateField('date_of_purchase', validators=[DataRequired()])
guarantee_period = IntegerField('guarantee_period', validators=[DataRequired()])
files = MultipleFileField('files')
并查看代码:
form = TestForm()
...
files = form.files
for file in files:
with open(path.join('some_path', file.filename), 'wb') as f:
f.write(file.read())
我收到了这么多的请求:
["<_io.BufferedReader name='1.jpg'>", "<_io.BufferedReader name='2.jpg'>"]
但我得到了错误:
AttributeError: 'str' object has no attribute 'filename'
因此它将io.BufferedReader 转换为str。我该怎么做才能解决这个问题?
【问题讨论】:
-
我没用过
MultipleFileField,但有了FileField,你只需要form.file.data.save(path)。这在这种情况下是否有效(例如,在你的循环中只做一个file.data.save(path)或类似的东西)? -
@noslenkwah 不,它不一样。我也试过了。
-
@noslenkwah 在这种情况下
form.file.data返回列表,io.BufferedReader转换为字符串 -
只是类名
-
我试过了。我找到了答案here
标签: python flask flask-wtforms wtforms