App Engine Blobstore - 从Android上传文件

时间:2014-05-15 16:31:18

标签: android python google-app-engine http-post webapp2

我有一个App Engine应用程序,它使用blobstore存储用户个人资料图片。当我从Chrome上传表单中的图片时,它运行正常。当我尝试从Android应用程序上传图像时,它会失败。与this question相反,使用Android应用程序上传到我的开发服务器也不起作用。

我的应用引擎服务器遵循this link的指南。我的Android上传代码基于来自this link的apache httpcore和httpmime。

这是Chrome的成功请求:

self.request.params:

UnicodeMultiDict([(u'usersid', u'xxxxx'), (u'profilePicUpload', FieldStorage(u'profilePicUpload', u'image.png'))])

self.request.headers:

{'Origin': 'https://site.appspot.com', 'Accept-Language': 'en-GB,en-US;q=0.8,en;q=0.6',
'X-Appengine-Blobchunksize': '9521', 'X-Requested-With': 'XMLHttpRequest',
'X-Appengine-Blobupload': 'true', 'Accept': '*/*', 'User-Agent': 'Mozilla/5.0 (X11;
Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.132 Safari/537.36',
'Host': 'site.appspot.com', 'Cookie': 'xxxxx', 'Content_Type': 'multipart/form-data;
boundary=001a11333c426e860104f972b1fc', 'Referer': 'https://site.appspot.com/profile',
'Content-Type': 'multipart/form-data; boundary=001a11333c426e860104f972b1fc',
'X-Appengine-Country': 'ZZ', 'X-Appengine-Blobsize': '9521'}

self.request.body:

--001a11333c426e860104f972b1fc
Content-Disposition: form-data; name="usersid"

xxxxx
--001a11333c426e860104f972b1fc
Content-Disposition: form-data; name="profilePicUpload"; filename="image.png"
Content-type: message/external-body; blob-key="xxxxx" ...

这是来自Android的不成功请求:

self.request.params:

UnicodeMultiDict([(u'usersid', u'xxxxx'), (u'profilePicUpload', FieldStorage(u'profilePicUpload', u'image.jpg'))])

self.request.headers:

{'Content_Length': '2103726', 'User-Agent': 'Apache-HttpClient/UNAVAILABLE (java 1.4)',
'Host': 'site.appspot.com', 'Content_Type': 'multipart/form-data;
boundary=cn2wRMd4fQphmeBcsYsjjJH7wfDtPm', 'X-Appengine-Region': 'eng', 'X-Appengine-City':
'crawley', 'X-Appengine-Citylatlong': '51.109140,-0.187227', 'Content-Type':
'multipart/form-data; boundary=cn2wRMd4fQphmeBcsYsjjJH7wfDtPm', 'X-Appengine-Country': 'GB'}

self.request.body:

--cn2wRMd4fQphmeBcsYsjjJH7wfDtPm
Content-Disposition: form-data; name="usersid"

xxxxx
--cn2wRMd4fQphmeBcsYsjjJH7wfDtPm
Content-Disposition: form-data; name="profilePicUpload"; filename="image.jpg"
Content-type: application/octet-stream
....

self.get_uploads()返回第二种情况的空列表。有什么想法吗?

正如您所看到的,我在文件名之前没有this question中缺少的空格。

0 个答案:

没有答案