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

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

我在 Java 中使用 HttpURLConnection 对象和 setChunkedStreamingMode 在 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: Length required 回答我的请求。这是否意味着不支持分块传输模式,或者我是否错误地初始化了连接?生产服务器在这里的行为是否有所不同?这种行为是否是在生成上传 url 时指定最大上传大小的结果?

编辑:

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

最佳答案

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

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

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

    关于java - AppEngine BlobStore 是否支持用于上传的分块传输编码(状态 411 : Length required)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13127500/

    10-16 23:27