GAE BlobstoreUploadHandler无法识别文件

时间:2015-05-11 21:42:09

标签: python google-app-engine python-requests blobstore

当我从这样的客户发送请求时:

with open(config.datafile, "rb") as f:
  r = requests.post(config.endpoint, files={"file": f})
  print r.text

我的GAE应用程序是这样的:

class FileUploadHandler(blobstore_handlers.BlobstoreUploadHandler):

  def post(self):
    self.response.out.write(self.get_uploads())

我希望得到这样的东西:

{
  "file": "line 1\nline 2\nline 3\nline 4\nline 5\nline 6\nline 7\nline 8\nline 9\n"
},

但是请求是将文件数据放在数据中,这样如果我将应用程序更改为如下所示:

class FileUploadHandler(blobstore_handlers.BlobstoreUploadHandler):

  def post(self):
    self.response.out.write(self.request.get("file"))

我现在得到一个响应机构,如:

line 1
line 2
line 3
...

这似乎与文档相反。有人可以解释为什么吗?

1 个答案:

答案 0 :(得分:1)

我怀疑您是将文件发送到映射到FileUploadHandler的URL。这不是正确的做法。

您需要将文件上传到blobstore.create_upload_url返回的网址。

即使这样,您也无法通过请求访问该文件。您必须使用BlobReader来访问它。

以下是相关文档:

上传到blobstore:https://cloud.google.com/appengine/docs/python/blobstore/#Python_Uploading_a_blob

从blobstore阅读:https://cloud.google.com/appengine/docs/python/blobstore/blobreaderclass