使用内容api,GZIP从box.com下载文件

时间:2014-07-24 16:35:08

标签: box

我在Box.com网站上有一个6mb的txt文件。 现在我想用api下载文件。因为下载需要时间,我想将其下载为gzip压缩文件。 正如https://developers.box.com/docs/所示,我们必须在其中添加带有" gzip,deflate"的accept-encoding标头。我添加了这个标题,但文件没有下载为zip文件,它的大小与6mb相同,如果它是压缩的,那么它应该小于1 mb。

但它没有发生。以下是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 

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

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

  

如果文件可供下载,则响应为302   找到dl.boxcloud.com上的URL。 dl.boxcloud.com网址不是   执着。客户端需要按照重定向进行操作   实际上下载文件。返回文件的原始数据   除非文件ID无效或用户无权访问它。

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

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

希望这有帮助。