我正在用Python Flask开发一个网站。我要做的是把上传的文件放在一个表格里,然后把它附在邮件上。我尝试过类似问题中给出的解决方案,但它给出了以下错误:
AttributeError: 'str' object has no attribute 'filename'
我做错什么了?我是Python和烧瓶的初学者。 我的代码是:
class UploadForm(Form):
branch = StringField('branch', validators = [DataRequired()])
year = StringField('year', validators = [DataRequired()])
sub = StringField('sub', validators = [DataRequired()])
paper = FileField('Logo', validators = [Required()])
def uploadPaper(form):
msg = Message('New upload request', sender = ADMINS[0], recipients = ADMINS)
msg.body = 'text body'
msg.html = 'Branch: ' + form.branch.data + '<br />' + 'Year: ' + form.year.data + '<br />' + 'Subject: ' + form.sub.data
msg.attach(form.paper.data.filename, 'application/octect-stream', form.paper.data.read())
with app.app_context():
mail.send(msg)
return "success"
我正在调用uploadPaper()函数来验证表单。在
好吧,这个错误意味着你试图从一个字符串中读取一个文件。在
AttributeError: 'str' object has no attribute 'filename'
这是因为uploadPaper()函数返回的是字符串(或“str”)而不是“file”对象。由于Python是面向对象的,所以脚本可能试图从file对象读取“filename”属性。在
我还可以在你的函数中看到,有一个对象具有你想要使用的属性,这里是
看起来
form.paper.data
对象具有您稍后尝试使用的属性“filename”。在为什么不试试}?在
return form.paper.data
而不是{相关问题 更多 >
编程相关推荐