我需要从基于Webapp2(Python)的Google App Engine应用程序中的表单上传和处理CSV文件我知道我可以使用blobstore临时存储文件,但我很想知道是否有办法处理文件而不必存储它。
答案 0 :(得分:3)
上传文件的内容位于处理程序的self.request.POST
中,因此您可以获取该内容(假设上传文件的字段名为'foo'
),例如
content = self.request.POST.multi['foo'].file.read()
所以现在你把内容作为一个字符串 - 按你的意愿处理它。这当然假设将适合内存(没有多兆字节上传! - )......
答案 1 :(得分:3)
如果您需要通过带有HTML表单的webapp2上传文件,您需要做的第一件事就是将HTML表单enctype
属性更改为multipart/form-data
,因此代码段如下所示:
<form action="/emails" class="form-horizontal" enctype="multipart/form-data" method="post">
<input multiple id="file" name="attachments" type="file">
</form>
在python代码中,您可以通过request.POST
直接阅读该文件,这里是一个示例代码段:
class UploadHandler(BaseHandler):
def post(self):
attachments = self.request.POST.getall('attachments')
_attachments = [{'content': f.file.read(),
'filename': f.filename} for f in attachments]