python - 使用 BlobstoreUploadHandler 处理图像上传并返回 JSON 消息

标签 python google-app-engine webapp2

我正在尝试将图像上传到使用 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/

相关文章:

python - Python3多处理进程如何传递变量?

python - 如何使用 Python 3.3 实现原始帧捕获?

java - 在哪里可以找到 DatastoreViewerServlet - GAE?

html - App Engine GO SDK 加载 CSS 文件出现 500 错误

php - 随机获取云存储错误 : UNAUTHORIZED

google-app-engine - Webapp2自定义标签

python - 如何检查 NumPy 和 SciPy 中的 BLAS/LAPACK 链接?

python - 再次迭代,质因数循环,python

python - webapp2 请求参数/处理程序参数的自动转换?

python - 如何从 webapp2 中的 cookies/headers/session 中决定语言?