1

我在 Box.com 网站上有一个 6mb 的 txt 文件。现在我想使用 api 下载文件。由于下载需要时间,我想将其下载为 gzip 文件。如此处给出的https://developers.box.com/docs/我们必须在其中添加带有值“gzip,deflate”的接受编码标头。我已经添加了这个头文件,但是文件没有作为 zip 文件下载,它的大小与 6mb 相同,如果它被压缩,那么它的大小应该小于 1mb。

但它没有发生。以下是 REST 请求中传递的标头。

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)                      Chrome/36.0.1985.125 Safari/537.36
Authorization: Bearer ACCESSTOKEN
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,te;q=0.6

以下是响应标头。

Server: nginx 
Date: Thu, 24 Jul 2014 16:24:56 GMT 
Content-Type: application/octet-stream 
Content-Length: 6685772 
Connection: keep-alive
Cache-control: private
Accept-Ranges: bytes
Content-Disposition: attachment;filename="abc.log";filename*=UTF-8''  
X-Content-Type-Options: nosniff
Accept-Ranges: bytes 

我在这里错过了什么吗?

4

1 回答 1

1

我遇到了同样的问题。但是,我也意识到为什么会发生这种情况。引用Box SDK 文档

如果该文件可供下载,则响应将是 302 Found 到 dl.boxcloud.com 的 URL。dl.boxcloud.com URL 不是持久的。客户端需要遵循重定向才能实际下载文件。除非文件 ID 无效或用户无权访问,否则返回文件的原始数据。

需要注意的重要一点是,为了下载文件,客户端会重定向到非持久 URL。当我们检查作为重定向请求的一部分传递的标头序列时,您可以看到Accept-Encoding: gzip deflate丢失。我使用 Fiddler 进行了尝试,您可以使用任何其他 HTTP 代理或拦截器。

这应该是没有使用gzip编码下载文件的原因。

希望这可以帮助。

于 2014-08-06T05:29:57.200 回答