【发布时间】:2012-07-24 01:46:32
【问题描述】:
我试图找出从 JavaScript 发起的 HTTP 请求上传/下载二进制数据到 Google AppEngine 的 Blobstore 的最低数据开销方式。理想情况下,我想直接提交二进制数据,即未编码的 8 位值;也许在一个看起来像这样的 POST 请求中:
...
Content-Type: multipart/form-data; boundary=boundary;
--boundary
Content-Disposition: form-data; name="a"; filename="b"
Content-Type: application/octet-stream
@#^%(^Qtr...
--boundary--
这里,@#^%(^Qtr... 理想地表示任意 8 位二进制数据。
具体来说,我想了解以下内容:
- 是否可以直接上传 8 位二进制数据,还是需要以某种方式对数据进行编码,例如 base-64 MIME 编码?
- 如果我使用不同的编码,Blobstore 会将数据保存为内部的 8 位二进制文件还是编码格式? IE。 base-64 编码会增加 33% 的存储成本吗?
- 同理:编码开销会增加传出带宽成本吗?
- 有没有更好的方法来格式化 POST 请求,这样我就不需要想出一个不会出现在我的二进制数据中的
boundary?例如。有没有办法指定 Content-Length 而不是边界? - 在检索数据的 GET 请求中,我是否可以简单地期望二进制数据以返回字符串结尾,或者服务器会以某种方式自动对数据进行编码?
- 如果我需要使用某种编码,在支持的基本随机 8 位数据选项中,哪一种是最佳选择? (base-64、UTF-8 还是其他?)
【问题讨论】:
标签: javascript google-app-engine upload binary blobstore