


Node.JS implémente le téléchargement segmenté des fichiers de configuration pour les téléchargements de CV segmentés
Apr 11, 2018 pm 03:22 PMCette fois, nous vous proposons Node.JS pour implémenter le téléchargement segmenté du fichier de configuration , et Node.JS pour implémenter le téléchargement segmenté du fichier de configuration pour un CV segmenté. sont les précautions pour le téléchargement de segments ? Ce qui suit est un cas pratique, jetons un coup d'oeil.
Balise d'en-tête
En-tête de demande : télécharger le contenu du fichier après 3744
range: bytes=3744-
En-tête de réponse de retour : longueur totale du fichier 15522643 octets
accept-ranges': 'bytes' content-range': 'bytes */15522643'
Configuration Nginx
Tout d'abord, vous devez configurer Nginx pour prendre en charge le retour des balises de plage. Il est très simple d'ajouter des octets add_header Accept-Ranges ; Cette ligne peut être
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; } ... }
. Après l'activation, si le côté node.js envoie des informations de demande contenant l'en-tête de plage, alors nginx renverra des informations relatives à la plage :
Il s'agit d'un en-tête de réponse complet. Notez que content-length
ici n'est pas la longueur totale du fichier, mais la longueur de la plage actuelle.
{ 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' }
La taille totale du fichier peut être obtenue en fonction de la plage de contenu de cet en-tête.
Implémentation de Node.JS
Cet exemple détecte d'abord les fichiers à moitié téléchargés localement, puis crée un flux de fichiers en mode lecture-écriture « r+ » et écrit le flux de réponse dans le fichier.
Ici, la prise en charge de la plage sera ajoutée au fichier de déclaration.
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() ... })
Retour à l'en-tête
Lors de la demande de nginx, d'autres codes d'état peuvent être renvoyés, tels que 206 ou 416, avec la signification suivante :
206 Contenu partiel
Ce qui est renvoyé fait partie du contenu du fichier
416 Plage demandée non satisfaisante
La plage demandée dépasse la taille du fichier
Je pense que vous maîtrisez la méthode de lecture de cet article. Pour plus de passionnant, veuillez prêter attention aux autres articles connexes sur le site Web PHP chinois ! Lecture recommandée :Comment gérer les sous-itinéraires qui ne s'affichent pas dans la barre de navigation inférieure de vue.js
Comment implémenter la randomisation dans JS Switch WeChat ID
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript

WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel

Comment mettre en œuvre un système de réservation en ligne à l'aide de WebSocket et JavaScript

Comment utiliser JavaScript et WebSocket pour mettre en œuvre un système de commande en ligne en temps réel

Où est le profil utilisateur Win10 ? Comment configurer le profil utilisateur dans Win10 ?

JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP
