AppEngine BlobStore是否支持上传的分块传输编码(状态411:需要长度)?

时间:2012-10-29 18:25:51

标签: java google-app-engine upload blobstore chunked-encoding

我很难找到有关AppEngine的基本问题的文档:

BlobStore是否支持上传的分块传输编码?

我在Java中使用HttpURLConnection对象,使用setChunkedStreamingMode以多部分/表单数据类型请求上传文件,使用以下代码设置连接:

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:需要长度来回答我的请求。这是否意味着不支持分块传输模式,或者我是否错误地初始化连接?生产服务器在此处的行为是否不同?这种行为是在生成上传网址时指定最大上传大小的结果吗?

编辑:

如果我只是注释掉cxn.setChunkedStreamingMode(9999);行,那么一切都很完美,但我宁愿不这样做,所以在发送请求之前我不必在内存中缓冲数百MB ...... / p>

1 个答案:

答案 0 :(得分:5)

以下是我对上述问题的测试结果:

  1. 开发服务器支持上传的分块传输编码。
  2. 生产服务器支持,如Stuart所示。 (唷)
  3. 我会报告任何依赖于指定上传大小限制的内容,但我怀疑这很重要。
  4. 不幸的是,我必须编写两个版本的代码,一个用于在开发服务器上进行测试,另一个用于在生产服务器上运行,但这绝对是一种可接受的方案。