在服务器上,我这样做:
var result = HTTP.get("https://spoticle001.s3-eu-west-1.amazonaws.com/2NtoSkvYZeeetrf3k-0_thumb");
console.log("content length:", result.content.length);
我看到 11781。然而, header “content-length”字段指示 12047,这确实是该 URL 处文件的实际大小。
在客户端,相同的请求导致另一个内容长度:11618。
这似乎是 HTTP.get 最简单的用例。为什么会有如此奇怪的结果?
最佳答案
那是因为 HTTP
使用 npm
的 request
模块发出请求,默认情况下,在其中设置了响应编码到 utf8
:
encoding
- encoding to be used onsetEncoding
of response data. Ifnull
, thebody
is returned as aBuffer
. Anything else (including the default value ofundefined
) will be passed as the encoding parameter totoString()
(meaning this is effectivelyutf8
by default). (Note: if you expect binary data, you should setencoding: null
.)
你可以这样做:
var result = HTTP.get("...", {
npmRequestOptions: { encoding: null }
});
测试:
result.content.length
> 12047
有用信息:request
options .
关于http - Meteor HTTP.get 导致内容损坏(?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46431044/