我需要在谷歌应用引擎(GAE Python)上实现一个相当简单的web表单,它接受一些表单输入(姓名、电子邮件、电话)和简历(通常是TXT、PDF或DOC/DOCX)文件。提交表格后,我希望通过电子邮件发送表格内容,如果表格中提交了文件,则将其作为附件包含在指定电子邮件地址的同一电子邮件中。
- 我不需要该文件在通过电子邮件/附件发送后存在。有点像临时文件,或者存储在临时blob存储区中
- 有了HTML5和jQuery,就有很多漂亮的用户界面来实现文件上传。是否有任何推荐的方法可以使用其中一种与GAE配合良好的方法,以及在浏览器不支持现代方法(即IE)的情况下能够优雅地降级
如果相关的话,我正在使用jinja2框架。(顺便说一句,我是Python新手)
提前感谢!
要在GAE中将文件作为blob上传,您需要来自名为webapp
的内置框架的blobstore_handlers
。这些文档有一个完整的上传文件示例,我认为没有其他方法可以上传到blobstore。
当您有blob时,请参阅文档中的此页面的第一个示例,以便将blob附加到电子邮件中。
现在,对于"临时文件解决方案",您可以尝试不同的方法:使用StringIO-python模块将上传文件写入ram。类似的东西:
<form action="/test/" method="POST" enctype="multipart/form-data">
<input type="file" name="file"><br>
<input type="submit"name="submit" value="Submit">
</form>
def post(self):
output = StringIO.StringIO()
upload = self.request.get('file')
output.write(upload)
self.response.write(output.getvalue())