3

AppEngineに関する非常に基本的な質問に関するドキュメントを見つけるのに非常に苦労しています。

BlobStoreは、アップロードのチャンク転送エンコーディングをサポートしていますか?

setChunkedStreamingModeを使用してJavaでHttpURLConnectionオブジェクトを使用し、次のコードを使用して接続を設定することで、multipart/form-dataタイプのリクエストでファイルをアップロードしています。

HttpURLConnection cxn = (HttpURLConnection) new URL(uploadUrl).openConnection();
cxn.setRequestMethod("POST");
cxn.setChunkedStreamingMode(9999);
cxn.setRequestProperty("Content-Type", "multipart/form-data; boundary=-");
cxn.setDoOutput(true);
cxn.connect();

dev-serverは、ステータス411:必要な長さで私の要求に応答します。これは、チャンク転送モードがサポートされていないことを意味しますか、それとも接続を誤って初期化していますか?ここでは、運用サーバーの動作が異なりますか?この動作は、アップロードURLを生成するときに最大アップロードサイズを指定した結果ですか?

編集:

行をコメントアウトするだけcxn.setChunkedStreamingMode(9999);で、すべてが完全に機能しますが、これはしたくないので、リクエストを送信する前に数百MBのメモリをバッファリングする必要はありません...

4

1 に答える 1

5

上記の質問に関する私のテストの結果は次のとおりです。

  1. 開発サーバーは、アップロード用のチャンク転送エンコーディングをサポートしていません。
  2. Stuartが示すように、本番サーバーはそれをサポートします。(ふー)
  3. アップロードサイズの制限を指定することへの依存について報告しますが、それが重要かどうかは疑問です。

残念ながら、コードの2つのバージョンを作成する必要があります。1つは開発サーバーでのテスト用で、もう1つは本番サーバーでの実行用ですが、これは間違いなく許容できるシナリオです。

于 2012-10-30T15:47:33.440 に答える