我正在尝试将图像上传到使用 create_upload_url() 创建的 URL,使用默认的 BlobstoreUploadHandler 处理它,并使用图像的 get_serving_url() URL 将 JSON 消息返回给客户端。我的代码如下:
class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
response = {}
upload_files = self.get_uploads('file')
blob_info = upload_files[0]
response['error'] = False
response['message'] = "Image uploaded."
response['image_url'] = images.get_serving_url(blob_info.key())
self.response.headers['Content-Type'] = 'application/json'
self.response.out.write(json.dumps(response))
app = webapp2.WSGIApplication(
[('/_ih/upload_handler/', UploadHandler),
], debug=True)
问题是客户端没有收到响应。 AppEngine 日志显示请求的状态为 200。使用flash请求时,状态码为200,无响应body,使用HTML5会输出状态“(cancelled)”。我不知道发生了什么。从我在互联网上看到的所有代码片段来看,这应该可行。请帮忙!谢谢。
最佳答案
要处理上传并返回 JSON 响应,您需要从 upload_handler 重定向到将返回 JSON 响应的处理程序。
这是一个例子:
class FileUploadHandler(blobstore_handlers.BlobstoreUploadHandler):
def post(self):
blob_info = self.get_uploads()[0]
self.redirect(self.uri_for("successfulUpload",blob_key = blob_info.key()))
class SuccessfulUpload(BaseHandler):
def get(self, blob_Key):
response['error'] = False
response['message'] = "Image uploaded."
response['image_url'] = images.get_serving_url(blobstore.BlobKey(blob_Key))
self.response.headers['Content-Type'] = 'application/json'
self.response.out.write(json.dumps(response))
关于python - 使用 BlobstoreUploadHandler 处理图像上传并返回 JSON 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14784295/