Jeśli chcesz po prostu pobrać rozmiar pliku, najlepiej jest użyć HTTP HEAD, który zwraca tylko nagłówki odpowiedzi z serwera bez treści.
Można złożyć wniosek głowę w node.js takiego:
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();
EDIT:
zdałem sobie sprawę, że nie naprawdę odpowiedzieć na pytanie, co jest w istocie „Jak zrobić Na wczesnym etapie Node.js kończę żądanie? ". można rozwiązać każdy wniosek w środku przetwarzanie przez wywołanie 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);
});
});
Można to sprawdzić przez zakomentowałeś się zniszczyć() rozmowę i obserwację, że w pełnym wnioskiem zwracane są dwa kawałki. Jak wspomniano w innym miejscu, bardziej efektywne jest użycie HTTP HEAD.
Dzięki za odpowiedź. Czym różni się on od metody response.end() i kiedy powinienem go użyć? – Tushar
Jeszcze jedno, jeśli nie przywiążę słuchacza do zdarzenia "data", czy dane będą nadal przesyłane? Mam na myśli, że moja przepustowość zostanie niepotrzebnie zmarnowana? – Tushar
Tak, dane będą nadal wysyłane do klienta, nawet jeśli nie zajmiesz się zdarzeniem "data". –