如果您只想获取文件的大小,最好使用HTTP HEAD,它只返回来自服务器的响应标头而不返回正文。
您可以像这样在 Node.js 中发出 HEAD 请求:
var http = require("http"),
// make the request over HTTP HEAD
// which will only return the headers
requestOpts = {
host: "www.google.com",
port: 80,
path: "/images/srpr/logo4w.png",
method: "HEAD"
};
var request = http.request(requestOpts, function (response) {
console.log("Response headers:", response.headers);
console.log("File size:", response.headers["content-length"]);
});
request.on("error", function (err) {
console.log(err);
});
// send the request
request.end();
编辑:
我意识到我并没有真正回答您的问题,本质上是“如何在 Node.js 中尽早终止请求?”。您可以通过调用 response.destroy() 来终止处理过程中的任何请求:
var request = http.get("http://www.google.com/images/srpr/logo4w.png", function (response) {
console.log("Response headers:", response.headers);
// terminate request early by calling destroy()
// this should only fire the data event only once before terminating
response.destroy();
response.on("data", function (chunk) {
console.log("received data chunk:", chunk);
});
});
您可以通过注释掉 destroy() 调用并观察在完整请求中返回两个块来测试这一点。然而,就像其他地方提到的那样,简单地使用 HTTP HEAD 更有效。