Axios ha retornat un flux. El fitxer encara s'està escrivint.
Espereu tant la lectura de la xarxa com l'escriptura a la destinació quan descarregueu amb Axios a Node a través d'un agent SOCKS.
Quan Axios resol una petició Node amb responseType: 'stream', el cos ja es pot consumir. El fitxer encara no està complet. Espereu el traspàs cap a la seva destinació:
import { createWriteStream } from 'node:fs';
import { pipeline } from 'node:stream/promises';
const response = await client.get(url, { responseType: 'stream' });
await pipeline(response.data, createWriteStream(partPath));Això fa servir un client ja configurat. El seu adaptador ha de suportar el proxy o l'agent SOCKS triat; l'opció de proxy HTTP integrada d'Axios i un agent SOCKS són mecanismes separats. L'aplicació proporciona l'URL, els temps d'espera i la política de cancel·lació.
Utilitzeu un camí temporal propietat d'aquesta operació. Decidiu com gestionar les col·lisions abans de crear el flux d'escriptura, perquè la neteja després d'un error no elimini el fitxer d'una altra persona. Una represa intencionada necessita la seva pròpia política.
pipeline coordina la lectura i l'escriptura i informa del seu error. Cridar response.data.pipe(file) i registrar l'èxit immediatament omet aquest punt de finalització. Una interrupció de la xarxa o un disc ple poden ocórrer després que hagi arribat una resposta HTTP vàlida; conserveu el context de la resposta i l'error que va aturar el pipeline.
Un cop el pipeline esperat ha tingut èxit, feu les comprovacions d'artefacte de l'aplicació i després publiqueu el nom final. Finalitzar vol dir que el flux s'ha consumit i escrit amb aquestes API, no que sigui la versió o el document esperats. En cas d'error o cancel·lació, conserveu o elimineu el fitxer parcial segons la política de represa triada. Un senyal de cancel·lació pot aturar la petició i les operacions de flux corresponents; no decideix què ha de fer l'aplicació amb la sortida.