GAE BlobstoreUploadHandler 无法识别文件

GAE BlobstoreUploadHandler doesn't recognize files

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

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
...

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

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

您需要将文件上传到 blobstore.create_upload_url 返回的 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