2010-11-04 3 views
0

J'ai essayé de poser sur le groupe GAE, mais ai rien, et je suis nulle part vite ce problème ...Obtenir 500 sur blobstore téléchargement dans la production, serveur dev fonctionne très bien

J'ai installé un application soumettant des fichiers à mon application GAEj, via le service blobstore. Tout fonctionne correctement sur le serveur de dev, mais en production, le blobstore accepte le téléchargement, puis appelle mon application avec l'URL fournie à blobstoreService.createUploadUrl(), transmet correctement tous les paramètres que mon client a fournis avec le fichier téléchargé cette URL, mais renvoie une carte vide pour l'appel blobstoreService.getUploadedBlobs(), à quel point mon application se bloque, et GAE renvoie un 500 à mon client. Tout cela serait beaucoup plus facile à déboguer si le blobstore donnait une indication, quelque part, de ce qui n'allait pas.

De même, je ne vois aucun blobs créé dans le tableau de bord, donc je sais qu'ils ne sont pas créés.

Merci! ----- ----- EDIT Voici un violoneux http capture des données:

POST http://MYAPP.appspot.com/_ah/upload/?oauth_token=1%2FTRaFrr7-6m55jqdJBnFovQwS51WsrmNKmhHfTNxEWro&oauth_consumer_key=anonymous&oauth_nonce=I5HbpgtW&oauth_signature_method=HMAC-SHA1&oauth_signature=Ls7CWohqj2829nJV8bIGj2EkDCQ%3D&oauth_version=1.0&oauth_timestamp=1288878313/AMmfu6YAKuBqyq8M8zQ5hpHUAY88LJjYmbPj6Y7663GrW5qa8dYwWLWXpRHtktu_C1dyozhoH8CS2It6hjNQTbBsoFgFcERR_8680rpcv0fnZ1rl_P_0mDw/ALBNUaYAAAAATNK7QSoSJ5sWOxotMwyHoShtadRvqw8P/ HTTP/1.1 
Content-Type: multipart/form-data; boundary=-----------------------------28947758029299 
User-Agent: MyAppClient 
Host: MYAPP.appspot.com 
Content-Length: 4678 
Expect: 100-continue 

-------------------------------28947758029299 
Content-Disposition: form-data; name="UploadToken" 

aglvcGVua2xlaW9yGgsSEkdvb2dsZUFjY291bnRzVXNlchihnAEM 
-------------------------------28947758029299 
Content-Disposition: form-data; name="LastInChain" 

True 
-------------------------------28947758029299 
Content-Disposition: form-data; name="CardID" 

6f1e4c6a-54b6-49a6-96fc-22e08db3dde4 
-------------------------------28947758029299 
Content-Disposition: form-data; name="MediaType" 

Image 
-------------------------------28947758029299 
Content-Disposition: form-data; name="HtmlKey" 

img0.jpg 
-------------------------------28947758029299 
Content-Disposition: form-data; name="Position" 

0 
-------------------------------28947758029299 
Content-Disposition: form-data; name="ParentID" 

4d386a6e-b742-4249-a2f0-ff33a2300ff0 
-------------------------------28947758029299 
Content-Disposition: form-data; name="file"; filename="img0.jpg"; 
Content-Type: image/jpg 

�����JFIF��`�`�����C� 
*BINARYSTUFFREMOVEDFROMHERE*  

-------------------------------28947758029299-- 
+0

Est-ce que tout fonctionne si vous utilisez un formulaire HTML standard à télécharger dans votre application? Il semble probable que votre code client ne génère pas de mises en ligne correctement formées et que dev_appserver soit plus flexible que le code de production. –

+0

Je suis actuellement en train de faire un formulaire HTML normal pour voir si cela change quelque chose. Je viens d'éditer ma question pour inclure une capture du téléchargement du fichier. J'ai passé beaucoup de temps à le comparer à ce qui est attendu par le RFC, et ça me semble bien. – tempy

+0

J'ai remarqué ce qui suit dans les logs du tableau de bord: "POST/mediaupload HTTP/1.1" 500 3791 - "MYAPP, gzip (gfe)", toutes les requêtes semblent se composer de deux nombres, le premier étant le code http le deuxième nombre, dans ce cas toujours "3791", je ne pouvais pas trouver la moindre idée de sa signification. Ce numéro pourrait-il être un code d'erreur du blobstore? – tempy

Répondre

1

J'ai finalement fixé mon problème, le méchant dans mon cas était un point-virgule.

La ligne

"Content-Disposition: form-data; name="file"; filename="img0.jpg";" 

devrait plutôt être:

"Content-Disposition: form-data; name="file"; filename="img0.jpg"" 

Bien que ce soit certainement mon erreur, je souhaite vraiment que le blobstore échouerait d'une manière moins opaque, et que l'analyseur se comporterait de manière identique sur le développement et la production.

Entre mon erreur, et cette question: AppEngine BlobStore upload failing with a request that works in the Development Environment Je suppose que l'analyseur blobstore peut être un animal de tempérament. =)

Questions connexes