【发布时间】:2015-03-14 10:01:04
【问题描述】:
我需要从基于 Webapp2 (Python) 的 Google App Engine 应用程序中的表单上传和处理 CSV 文件我知道我可以使用 blobstore 临时存储文件,但我很想知道是否有办法无需存储即可处理文件。
【问题讨论】:
标签: python google-app-engine blobstore webapp2
我需要从基于 Webapp2 (Python) 的 Google App Engine 应用程序中的表单上传和处理 CSV 文件我知道我可以使用 blobstore 临时存储文件,但我很想知道是否有办法无需存储即可处理文件。
【问题讨论】:
标签: python google-app-engine blobstore webapp2
上传文件的内容在您的处理程序中的self.request.POST 中,因此您可以使用例如获取该内容(例如,上传文件的字段名为'foo')
content = self.request.POST.multi['foo'].file.read()
因此,现在您将内容作为字符串进行了处理——按您的意愿处理它。当然,这确实假设该东西将适合内存(没有数兆字节的上传!-)...
【讨论】:
如果你需要通过 webapp2 上传带有 HTML 表单的文件,你需要做的第一件事是将 HTML 表单的enctype 属性更改为multipart/form-data,所以代码 sn-p 看起来像:
<form action="/emails" class="form-horizontal" enctype="multipart/form-data" method="post">
<input multiple id="file" name="attachments" type="file">
</form>
在python代码中,可以直接通过request.POST读取文件,这里是示例代码sn-p:
class UploadHandler(BaseHandler):
def post(self):
attachments = self.request.POST.getall('attachments')
_attachments = [{'content': f.file.read(),
'filename': f.filename} for f in attachments]
【讨论】: