ローカル開発サーバーでGAEコードをデバッグしようとしましたが、壁に衝突しました。このコードでは、GoogleのBlobstoreサービスを使用してファイルのアップロードを容易にしています。このコードは本番環境ではうまく動作しますが、私のローカル開発サーバーではうまく動作しません。ブロブストアGAEクラウドツールとローカル開発サーバーに関する問題
私は自分のJSPでblobstoreService.createUploadUrl("/uploadSurvey")
のフォームアクションとして標準のGoogleパターンを使用していて、サーブレットのblobstoreService.getUploads(request)
を呼び出しています。
ファイルが正しくアップロードされた(私はローカル管理コンソールを使用して、それを見ることができる)が、getUploads()
への呼び出しが例外をスローします:java.lang.IllegalStateException: Must be called from a blob upload callback request.
は、デバッガ内の要求を見てみると、必要なblobkey
属性が見つかりませんまた、フォーム内の他の入力パラメーターもありません。生のリクエスト(/ _ah/upload/...にディスパッチされたリクエスト)を見ると、フォームパラメータが存在します。
Googleのクラウドツールapp-engine-pluginを使用しています。これは、生成された戦争を実行するためにgcloud python devサーバーを使用します。
私はblobstoreが古いGAE機能であることを認識していますが、このコードはprodで「作業中」であるため、新しいサブシステムに切り替える必要はありません。
誰かが私のdevサーバー上でこれをすべて稼働させるためにどこに手掛かりを与えることができますか?
おかげで、
- デイブ
P.S.私はのgcloud devserver2ディレクトリの下http_proxy.pyにいくつかのデバッグを追加し、このコンテンツタイプのビーイングを観察
:
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
を更新:下記アップロードされたファイルが取り除かれた後、私のサーブレットに転送要求があります転送されます。コンテンツが存在しているように見えるように私は、回避策を考え出し
--===============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==--