在webapp2 / GAE中上传文件

时间:2015-01-15 21:14:49

标签: python google-app-engine blobstore webapp2

我需要从基于Webapp2(Python)的Google App Engine应用程序中的表单上传和处理CSV文件我知道我可以使用blobstore临时存储文件,但我很想知道是否有办法处理文件而不必存储它。

2 个答案:

答案 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]