Comment envoyer une partie du fichier en utilisant le flux de lecture en réponse à une requête HTTP?Envoyer une grande quantité de contenu en utilisant les flux
Je veux envoyer un Content-Range
arbitraire d'un énorme fichier.
Je ne peux pas utiliser les événements lorsque je fais fs.createReadStream('hugeFile.bin').pipe(response)
pour filtrer une partie du flux lisible. Je peux créer un faux flux inscriptible, qui omet (comme > /dev/null
) une partie des données, mais la taille chunk
peut ne pas être un multiple d'une première partie à envoyer.
Comment résoudre le problème?
Si je fais 'response.statusCode = 216;' alors 'response.setHeader ('Content-Range', 'octets' + start + '-' + (fin - 1) + '/' + stat.size) ; ', alors que dois-je faire pour envoyer le contenu du fichier par flux? Devrais-je appeler 'response.end();' après la ligne de code que vous avez écrite? – Orient
Ou devrais-je faire 'response.end();' dans le gestionnaire d'événements ''end'' de' fs.createReadStream (' hugeFile.bin ', {start: firstByte, end: lastByte}) 'objet? – Orient
response.end sera appelée automatiquement lorsque le flux source se termine. Ça devrait juste marcher. –