Heim > Web-Frontend > js-Tutorial > Node.JS implementiert das segmentierte Herunterladen von Konfigurationsdateien für segmentierte Lebenslauf-Downloads

Node.JS implementiert das segmentierte Herunterladen von Konfigurationsdateien für segmentierte Lebenslauf-Downloads

php中世界最好的语言
Freigeben: 2018-04-11 15:22:15
Original
2329 Leute haben es durchsucht

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-
Nach dem Login kopieren

Return Response Header: Gesamtdateilänge 15522643 Bytes

accept-ranges': 'bytes'
content-range': 'bytes */15522643'
Nach dem Login kopieren

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

Anforderungsinformationen
server {
 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;
 }
 ...
}
Nach dem Login kopieren
mit Bereichsheader sendet, gibt Nginx bereichsbezogene Informationen zurück:

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' }
Nach dem Login kopieren

Node.JS-Implementierung

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()
 ...
})
Nach dem Login kopieren
Zurück zur Kopfzeile

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üllbar

Der angeforderte Bereich überschreitet die Dateigröße                                        

Ich 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 wird

So 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage