为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪7331174 2023-07-11 15:27:54
我正在尝试使用 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.filesfor 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. 我可以做什么来解决这个问题?
查看完整描述

1 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

您的“文件”是一个字符串,在 with 语句之前将其切片并保存到文件名变量中,然后在 with 语句中仅包含“文件名”。就像是:


form = TestForm()

...

files = form.files.data

for file in files:

   with open(path.join('some_path', file), 'wb') as f:

        f.write(file.read())


查看完整回答
反对 回复 2023-07-11
  • 1 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信