AppEngine BlobStore上载失败,请求在开发环境中有效

2024-04-20 03:41:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个AppEngine应用程序,它使用blobstore存储用户提供的图像数据。当我从Chrome的表单上传图片到应用程序时,效果很好。当我尝试从Android应用程序上传图像时,它失败了。如果我是针对开发服务器运行的,这两种方法都可以正常工作,但是Android上传对live服务不起作用。在

以下是Chrome的请求:

POST /_ah/upload/?userToken=11001/AMmfu6ZCyMQQ9YdiXal3SmSXIRTQIuSRXkNc-i3JmU0fqx_kJbUJ2OMLcS2lXhVJSK4qs7regViTKzOPz5ejoZYi0nAD5o8vNltiOViQw6DZO7_byZz3Ut0/ALBNUaYAAAAAS_lusgPMAGmpPrg0BuNsJyymX-57ob4i/ HTTP/1.1
Host: photohuntservice.appspot.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1064 Safari/532.5
Referer: http://photohuntservice.appspot.com/debug_newpuzzle?userToken=11001
Content-Length: 60360
Cache-Control: max-age=0
Origin: http://photohuntservice.appspot.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarybl05YLmLbFRf2MzN
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

------WebKitFormBoundarybl05YLmLbFRf2MzN
Content-Disposition: form-data; name="userToken"

11001
------WebKitFormBoundarybl05YLmLbFRf2MzN
Content-Disposition: form-data; name="img"; filename="Photo_020908_001.jpg"
Content-Type: image/jpeg

<image data>
------WebKitFormBoundarybl05YLmLbFRf2MzN
Content-Disposition: form-data; name="longitude"

-122.084095
------WebKitFormBoundarybl05YLmLbFRf2MzN
Content-Disposition: form-data; name="latitude"

37.422006
------WebKitFormBoundarybl05YLmLbFRf2MzN--

这是我的客户端的请求(在Android上是用Java编写的,但我认为这与此无关):

^{pr2}$

在这两种情况下,捕捉请求的AppEngine Python代码是相同的:

  class UploadPuzzle( blobstore_handlers.BlobstoreUploadHandler ):
        def post(self):
            upload_files = self.get_uploads(  )

问题是在生产AppEngine服务上运行时self.get_上传()从我的客户端应用程序发出请求时返回一个空列表。这两个请求都返回我在开发服务器上期望的结果(一个包含一个blob_信息的列表),Chrome在这两种情况下都返回我期望的结果。在


Tags: nameform应用程序dataservicecontentchromeandroid
2条回答

另一个选择可能是因为您添加了URL参数,它正常工作,但与Blobstore上载程序重定向到servlet的方式不同。在

原来问题是这条线:

Content-Disposition: form-data; name="img";filename="PhotoHunt.jpg"

应该这样写:

^{pr2}$

生产服务器上表单数据的解析器比开发环境中的解析器更严格,并且在分号和“filename=”之间需要一个空格

相关问题 更多 >