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
当我像这样从客户端发送请求时:
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