ファイルのサイズを取得するだけの場合は、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() 呼び出しをコメントアウトし、完全なリクエストで 2 つのチャンクが返されることを確認することで、これをテストできます。ただし、他の場所で述べたように、単純に HTTP HEAD を使用する方が効率的です。