我在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
我在这里错过了什么吗?
答案 0 :(得分:0)
我遇到了同样的问题。但是,我也意识到为什么会发生这种情况。引用Box SDK documentation:
如果文件可供下载,则响应为302 找到dl.boxcloud.com上的URL。 dl.boxcloud.com网址不是 执着。客户端需要按照重定向进行操作 实际上下载文件。返回文件的原始数据 除非文件ID无效或用户无权访问它。
需要注意的重点是,客户端重定向到非持久性URL以下载文件。当我们检查作为重定向请求的一部分传递的标头序列时,您可以看到 Accept-Encoding:gzip deflate 缺失。我使用Fiddler来尝试这个,你可以使用任何其他HTTP代理或拦截器。
这应该是使用 gzip 编码无法下载文件的原因。
希望这有帮助。