通过flask和wtforms MultipleFileField保存多个文件

我正在尝试使用 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. 我可以做什么来解决这个问题?


慕田峪7331174
浏览 93回答 1
1回答

白衣非少年

您的“文件”是一个字符串,在 with 语句之前将其切片并保存到文件名变量中,然后在 with 语句中仅包含“文件名”。就像是:form = TestForm()...files = form.files.datafor file in files:&nbsp; &nbsp;with open(path.join('some_path', file), 'wb') as f:&nbsp; &nbsp; &nbsp; &nbsp; f.write(file.read())
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python