[英]How to attach file to Flask Mail received from Flask Form?
我正在用Python Flask開發一個網站。 我要做的是以一種形式獲取上傳的文件,並將其附加到郵件中。 我嘗試了類似問題中給出的解決方案,但出現以下錯誤:
AttributeError:'str'對象沒有屬性'filename'
我究竟做錯了什么? 我是python和flask的初學者。 這是我的代碼:
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是面向對象的,因此您的腳本可能正在嘗試從文件對象讀取“文件名”屬性。
我還可以在您的函數中看到,有一個具有您要使用的屬性的對象,在這里
msg.attach(form.paper.data.filename, 'application/octect-stream', form.paper.data.read())
看起來form.paper.data
對象具有您稍后要嘗試使用的屬性“文件名”。
為什么不嘗試return form.paper.data
而不是return "success"
呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.