所有
Python和web2py新手在这里 - 我试图通过电子邮件转发用户输入(电子邮件地址和文件),一旦用户在网站上传信息。 用户提供的信息存储在数据库中,但它仍然是我从数据库中获取文件并通过电子邮件转发它。任何指针都非常赞赏!
这是我的控制器动作 -
def careers():
form = SQLFORM(db.cv_1, formstyle='bootstrap3_stacked')
for label in form.elements('label'):
label["_style"] = "display:none;"
form.custom.submit.attributes['_value'] = 'Submit CV'
if form.process().accepted:
applicant = str(form.vars.email)
mail.send(to=['email@company.com'], message= applicant + ' new CV', subject='CV submission', attachment=mail.Attachment('/path/to/file'))
return dict(form=form)
这是数据库模型
db.define_table('cv_1', Field('email',
requires=IS_EMAIL(error_message='Please provide your e-mail'),
widget=widget(_placeholder='Your e-mail (required)',_readonly=False)),
Field('cv', 'upload', autodelete=True, requires=[IS_LENGTH(1048576,1024),
IS_UPLOAD_FILENAME(extension='pdf')]))
答案 0 :(得分:0)
上传文件的转换文件名将在form.vars.cv
中(这是存储在数据库中db.cv_1.cv
字段中的值)。您可以将其与字段的.retrieve
方法一起使用,以获取完整文件路径或文件对象本身:
original_filename, filepath = db.cv_1.cv.retrieve(form.vars.cv)
mail.send(to=['email@company.com'], message=applicant + ' new CV',
subject='CV submission',
attachment=mail.Attachment(filepath, original_filename))