Dieses Mal bringen wir Ihnen Node.JS zur Implementierung des segmentierten Downloads der Konfigurationsdatei und Node.JS zur Implementierung des segmentierten Downloads der Konfigurationsdatei für den segmentierten Lebenslauf Gibt es die Vorsichtsmaßnahmen für das Herunterladen von Segmenten? Nachfolgend finden Sie einen praktischen Fall, werfen wir einen Blick darauf.
Header-Tag
Anforderungsanforderungsheader: Dateiinhalt nach 3744 herunterladen
range: bytes=3744-
Return Response Header: Gesamtdateilänge 15522643 Bytes
accept-ranges': 'bytes' content-range': 'bytes */15522643'
Nginx-Konfiguration
Zuerst müssen Sie Nginx so konfigurieren, dass es die Rückgabe von Bereichs-Tags unterstützt. Es ist sehr einfach, add_header Accept-Ranges-Bytes hinzuzufügen Wenn die node.js-Seite nach der Aktivierung
Anforderungsinformationenserver { listen 80; server_name adksdf.com; location ~ ^/(img/|js/|css/|upload/|font/|fonts/|res/|icon) { add_header Access-Control-Allow-Origin *; add_header Accept-Ranges bytes; root /var/www/...; access_log off; expires max; } ... }
Dies ist ein vollständiger Antwortheader. Beachten Sie, dass hier nicht die Gesamtlänge der Datei ist, sondern die Länge des aktuellen Bereichs.
content-length
Die Gesamtgröße der Datei kann anhand des Inhaltsbereichs in diesem Header ermittelt werden.
{ server: 'nginx', date: 'Wed, 24 Jan 2018 02:43:20 GMT', 'content-type': 'application/zip', 'content-length': '12420187', 'last-modified': 'Tue, 16 Jan 2018 12:09:47 GMT', connection: 'close', etag: '"5a5deb8b-ecdb53"', expires: 'Thu, 31 Dec 2037 23:55:55 GMT', 'cache-control': 'max-age=315360000', 'access-control-allow-origin': '*', 'accept-ranges': 'bytes', 'content-range': 'bytes 3102456-15522642/15522643' }
Dieses Beispiel erkennt zunächst halb heruntergeladene Dateien lokal, erstellt dann einen Dateistream im Lese-/Schreibmodus „r+“ und schreibt den Antwortstream in die Datei.
Hier wird der Anweisungsdatei Bereichsunterstützung hinzugefügt.
var reqOptions = { url: packageUrl, headers: {} } var filepath = '/path/to/your/part/file' var fileOptions = {} fs.stat(filepath, function(err, states) { if (states) { //Range: bytes=3744- reqOptions.headers['range'] = 'bytes=' + states.size + '-' fileOptions = { start: states.size, flags: 'r+' } } //创建 http 对象方法 var reqUrl = reqOptions.url var urlObj = url.parse(reqUrl) var options = { hostname : urlObj.hostname , port : urlObj.port , path : urlObj.pathname , headers : reqOptions.headers || {} } var req = http.request(options, function(res) { var receives = [] var err = null var statusCode = res.statusCode var headers = res.headers var ws = fs.createWriteStream(filepath, fileOptions) ws.on('error', function(e) { console.log('ws error', e) }) res.on('data', function(chrunk) { ws.write(chrunk) }) res.on('error', function(err) { ws.end() }) res.on('end', function() { ws.end() }) }) req.on('error', function(e) { cb && cb(e, null, {}) }) req.end() ... })
Beim Anfordern von Nginx können andere Statuscodes zurückgegeben werden, z. B. 206 oder 416, mit der folgenden Bedeutung:
206 Teilinhalt Was zurückgegeben wird, ist Teil des Dateiinhalts 416 Angeforderter Bereich nicht erfüllbarDer angeforderte Bereich überschreitet die DateigrößeIch glaube, dass Sie die Methode zum Lesen dieses Artikels beherrschen. Weitere spannende Artikel finden Sie auf der chinesischen PHP-Website.
Empfohlene Lektüre:
So gehen Sie damit um, dass die Unterroute nicht in der unteren Navigationsleiste von vue.js angezeigt wirdSo implementieren Sie die Randomisierung in JS Switch WeChat ID
Das obige ist der detaillierte Inhalt vonNode.JS implementiert das segmentierte Herunterladen von Konfigurationsdateien für segmentierte Lebenslauf-Downloads. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!