2010-05-23 5 views
5

में काम करता है मेरे पास एक ऐपइंजिन एप्लिकेशन है जो उपयोगकर्ता द्वारा प्रदान किए गए छवि डेटा को स्टोर करने के लिए ब्लॉबस्टोर का उपयोग करता है। जब मैं क्रोम में किसी फॉर्म से उस एप्लिकेशन पर छवियां अपलोड करता हूं तो यह ठीक काम करता है। जब मैं एक एंड्रॉइड एप्लिकेशन से एक छवि अपलोड करने का प्रयास करता हूं तो यह विफल हो जाता है। यदि मैं विकास सर्वर के खिलाफ दौड़ रहा हूं, तो दोनों विधियां ठीक काम करती हैं, लेकिन एंड्रॉइड अपलोड लाइव सेवा के खिलाफ काम नहीं करता है।एपइंजिन ब्लोबस्टोर अपलोड एक ऐसे अनुरोध के साथ विफल रहा है जो विकास पर्यावरण

यह क्रोम से अनुरोध है:

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-- 

यह मेरे मुवक्किल से अनुरोध है (जो एंड्रॉयड पर जावा में लिखा है, लेकिन मुझे लगता है कि प्रासंगिक है नहीं लगता है):

POST /_ah/upload/?userToken=11001/AMmfu6Zf9an6AU4lT9UuhIpxOZyOYb1LMwimFpeSh8zr6J1sX9F2ddJW3Qlsw0kwV3oALv-TNPWRQ6g4_Dgwk0UTwF47bbc78Yl44kDeV69MydTuR3N46S4/ALBNUaYAAAAAS_mMr3CYqTg3aVBDjhRxP0DyyRdvotyG/ HTTP/1.1 
Content-Type: multipart/form-data;boundary=----WebKitFormBoundaryhdyNAhmOouRDGErG 
Cache-Control: max-age=0 
Accept: */* 
Origin: http://photohuntservice.appspot.com 
Connection: keep-alive 
Referer: http://photohuntservice.appspot.com/getuploadurl?userToken=11001 
Content-Length: 2638 
Host: photohuntservice.appspot.com 
User-Agent: Apache-HttpClient/UNAVAILABLE (java 1.4) 
Expect: 100-Continue 

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

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

<image data> 
------WebKitFormBoundaryhdyNAhmOouRDGErG 
Content-Disposition: form-data; name="latitude" 

37.422006 
------WebKitFormBoundaryhdyNAhmOouRDGErG 
Content-Disposition: form-data; name="longitude" 

-122.084095 
------WebKitFormBoundaryhdyNAhmOouRDGErG-- 

दोनों ही मामलों अनुरोध को पकड़ने के लिए AppEngine अजगर कोड में एक ही है:

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

probl एम यह है कि जब उत्पादन ऐपइंजिन सेवा पर चल रहा है self.get_uploads() मेरे क्लाइंट ऐप से अनुरोध किए जाने पर एक खाली सूची देता है। विकास अनुरोध पर दोनों अनुरोध जो मैं उम्मीद करता हूं (इसमें एक blob_info के साथ एक सूची) लौटाता है, और क्रोम दोनों मामलों में जो अपेक्षा करता है वह लौटाता है।

उत्तर

11

बाहर कर देता है समस्या इस लाइन था:

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

यह इस तरह पढ़ना चाहिए:

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

उत्पादन सर्वर पर प्रपत्र-डेटा के लिए पार्सर में एक से अधिक सख्त है विकास पर्यावरण और अर्धविराम और "filename ="

+1

अच्छा पता लगाने का काम! क्या आप इसके लिए एक बग फाइल कर सकते हैं? –

+2

पहले से ही किया गया है: http://code.google.com/p/googleappengine/issues/detail?id=3273 –

+1

वह @ # $%! उत्पादन सर्वर "निश्चित रूप से फ़ाइल नाम से पहले वह जगह अधूरा है, मुझे इसे साफ़ करने दें", मैंने सोचा। ओह, मैंने अपनी कीमत के लिए भुगतान की कीमत। – drcode

-1

एक और विकल्प हो सकता है क्योंकि आपने सामान्य रूप से काम करता है, लेकिन वें के साथ नहीं है ई रास्ता Blobstore अपलोडर आपके सर्वलेट पर रीडायरेक्ट।

संबंधित मुद्दे