上传文件 webapp2/GAE
Uploading Files in webapp2/GAE
我需要从基于 Webapp2 (Python) 的 Google App Engine 应用程序中的表单上传和处理 CSV 文件,我知道我可以使用 blobstore 临时存储文件,但我很想知道是否有一种方法可以在根本不存储文件的情况下处理文件。
上传文件的内容在您的处理程序中的 self.request.POST
中,因此您可以使用例如[=13= 获取该内容(假设例如上传文件的字段名为 'foo'
) ]
content = self.request.POST.multi['foo'].file.read()
现在您已将内容作为字符串——按您的意愿进行处理。这当然假设 将 适合内存(没有多兆字节的上传!-)...
如果您需要通过 webapp2 以 HTML 形式上传文件,您需要做的第一件事是将 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]
我需要从基于 Webapp2 (Python) 的 Google App Engine 应用程序中的表单上传和处理 CSV 文件,我知道我可以使用 blobstore 临时存储文件,但我很想知道是否有一种方法可以在根本不存储文件的情况下处理文件。
上传文件的内容在您的处理程序中的 self.request.POST
中,因此您可以使用例如[=13= 获取该内容(假设例如上传文件的字段名为 'foo'
) ]
content = self.request.POST.multi['foo'].file.read()
现在您已将内容作为字符串——按您的意愿进行处理。这当然假设 将 适合内存(没有多兆字节的上传!-)...
如果您需要通过 webapp2 以 HTML 形式上传文件,您需要做的第一件事是将 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]