2017-06-26 1 views
-1

abrufen Ich muss die Content-Length und Content-Type Header von große Dateien mit Node erhalten.Nur Header einer GET-Anfrage im Knoten

Leider der Server, mit dem ich es zu tun habe, erlaubt keine HEAD Anfragen, und die Dateien sind zu groß, um eine komplette GET Anfrage zu machen.

Ich bin auf der Suche nach so etwas wie dieser Python-Code:

import requests 

r = requests.get(url, stream=True) 
content_length = r.headers['Content-Length'] 
content_type = r.headers['Content-Type'] 

Der stream=True Parameter bedeutet, dass die Datei nicht vollständig heruntergeladen werden.

Antwort

1

Wenn Sie das request Paket verwenden, könnten Sie so etwas tun:

const request = require('request'); 
const r = request(url); 
r.on('response', response => { 
    const contentLength = response.headers['content-length']; 
    const contentType = response.headers['content-type']; 
    // ... 
    r.abort(); 
}); 
1

Die http Bibliothek von NodeJS wird standardmäßig nicht alles holen, sondern den Rückruf gibt das incoming Objekt enthält, zu konstruiere die vollständige Antwort, die du hören musst .on ('data').

Werfen Sie einen Blick auf:

https://nodejs.org/api/http.html#http_http_get_options_callback

Wenn Sie dann die eingehenden Daten wollen „ignorieren“ können Sie (nur res.abort nennen). Wenn Sie dies aufrufen, werden verbleibende Daten in der Antwort gelöscht und der Socket zerstört.

+0

Das hat nicht für mich funktioniert. Im 'http.get' Callback habe ich' res.on ('data', ...) 'hinzugefügt, aber der innere Callback wurde nicht aufgerufen. Ich schätze, es wäre mit der ganzen Datei als Chunk aufgerufen worden. – tennabey