J'essaye de déboguer du code GAE sur mon serveur de développement local, mais j'ai frappé un mur. Le code utilise le service Blobstore de Google pour faciliter les téléchargements de fichiers. Le code fonctionne très bien sur la production mais pas sur mon serveur de développement local. J'utilise le modèle standard de Google en incluant mon action de formulaire dans mon jsp blobstoreService.createUploadUrl("/uploadSurvey")
puis en appelant blobstoreService.getUploads(request)
dans ma servlet.Problèmes de blobstore avec les outils cloud GAE et le serveur de développement local
Le fichier est téléchargé correctement (je peux voir à l'aide de la console d'administration locale), mais l'appel à getUploads()
lance l'exception: java.lang.IllegalStateException: Must be called from a blob upload callback request.
regardant la demande dans le débogueur, l'blobkey
attribut requis est introuvable , ni aucun des autres paramètres d'entrée dans le formulaire. En regardant la requête brute (celle envoyée à/_ah/upload/...), les paramètres du formulaire sont présents. J'utilise les outils google cloud app-engine-plugin, qui utilise le serveur dev de gcloud python pour exécuter la guerre générée. Je réalise que blobstore est une ancienne fonctionnalité GAE, mais comme ce code fonctionne sur prod, je préférerais ne pas avoir à passer au sous-système plus récent.
Quelqu'un peut-il me dire où trouver tout cela sur mon serveur de développement?
Merci,
- Dave
P.S. ci-dessous est la demande transmise à mon servlet après que le fichier téléchargé a été dépouillé:
POST /uploadSurvey HTTP/1.1
Accept-Encoding: identity
X-APPENGINE-BACKEND-ID: 8
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
X-APPENGINE-SERVER-NAME: localhost
Cookie: JSESSIONID=5773y31x3eut
X-Appengine-User-Email:
X-APPENGINE-DEFAULT-VERSION-HOSTNAME: localhost:8888
X-APPENGINE-SERVER-PROTOCOL: HTTP/1.1
X-Appengine-User-Organization:
X-APPENGINE-DEV-SCRIPT: unused
ORIGIN: http://localhost:8888
X-Appengine-User-Id:
Accept-Language: en-us
X-APPENGINE-SERVER-SOFTWARE: Development/2.0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/602.4.8 (KHTML, like Gecko) Version/10.0.3 Safari/602.4.8
X-Appengine-User-Nickname:
Host: localhost:8888
X-Appengine-Dev-Request-Id: wCTAonUKrB
Content-Type: multipart/form-data; boundary="===============1477989950756010976=="
Content-Length: 1372
X-APPENGINE-REQUEST-LOG-ID: 5e8eaef5aff4add89b774badea1fd3a30da8be
X-Appengine-User-Is-Admin: 0
UPGRADE-INSECURE-REQUESTS: 1
X-APPENGINE-SERVER-PORT: 8888
Referer: http://localhost:8888/settings
X-AppEngine-Country: ZZ
X-APPENGINE-REQUEST-ID-HASH: BFD4FDDA
X-APPENGINE-REMOTE-ADDR: ::1
Mise à jour:
Je glissai le débogage à http_proxy.py dans le répertoire gcloud de devserver2 et observé ce type de contenu étant transmis. Je suis encore plus confus maintenant, comme il semble que le contenu est présent ...
--===============5516630363169856841==
Content-Type: message/external-body; blob-key="XOQvaKc1cdczcwkIHfRFOw=="; access-type="X-AppEngine-BlobKey"
Content-Disposition: form-data; name="myFile"; filename="Naro Group - SNHU - Sales Readiness Assessment - Dec 2016.xls"
Content-Type: application/vnd.ms-excel
Content-Length: 164352
Content-MD5: NjBiNjI0N2M3MjZiMzc3NWMxZDQxYmM5YTU2YmM5YmM=
content-disposition: form-data; name="myFile"; filename="Naro Group - SNHU - Sales Readiness Assessment - Dec 2016.xls"
X-AppEngine-Upload-Creation: 2017-02-16 20:17:05.729401
--===============5516630363169856841==
Content-Type: text/plain
Content-Disposition: form-data; name="newSurveyId"
10001
--===============5516630363169856841==
Content-Type: text/plain
Content-Disposition: form-data; name="newSurveyName"
N
--===============5516630363169856841==
Content-Type: text/plain
Content-Disposition: form-data; name="newUserMessage"
--===============5516630363169856841==
Content-Type: text/plain
Content-Disposition: form-data; name="selectedClient"
6
--===============5516630363169856841==
Content-Type: text/plain
Content-Disposition: form-data; name="selectedPsf"
3
--===============5516630363169856841==
Content-Type: text/plain
Content-Disposition: form-data; name="selectedSection"
1
--===============5516630363169856841==--