当我从这样的客户发送请求时:
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
...
这似乎与文档相反。有人可以解释为什么吗?
答案 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