3

我很难找到关于 AppEngine 的一个非常基本的问题的文档:

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

我在 Java 中使用带有 setChunkedStreamingMode 的 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();

开发服务器以状态 411 回答我的请求:需要长度。这是否意味着不支持分块传输模式,或者我是否错误地初始化了连接?生产服务器在这里的行为是否不同?这种行为是在生成上传 url 时指定最大上传大小的结果吗?

编辑:

如果我简单地注释掉该行cxn.setChunkedStreamingMode(9999);,一切正常,但我宁愿不这样做,所以我不必在发送请求之前缓冲数百 MB 的内存......

4

1 回答 1

5

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

  1. 开发服务器不支持上传的分块传输编码。
  2. 正如 Stuart 所指出的,生产服务器确实支持它。(呼)
  3. 我将报告对指定上传大小限制的任何依赖,但我怀疑它是否重要。

不幸的是,我必须编写两个版本的代码,一个用于在开发服务器上进行测试,一个用于在生产服务器上运行,但这绝对是一个可以接受的场景。

于 2012-10-30T15:47:33.440 回答