Kada Axios riješi Node zahtjev s responseType: 'stream', tijelo je spremno za konzumaciju. Datoteka još nije dovršena. Pričekajte prijenos na odredište:

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));

Ovo koristi već konfiguriranog klijenta. Njegov adapter mora podržavati odabrani proxy ili SOCKS agent; Axiosova ugrađena HTTP proxy opcija i SOCKS agent odvojeni su mehanizmi. Aplikacija osigurava URL, vremenska ograničenja i politiku otkazivanja.

Koristite privremenu putanju koja pripada ovoj operaciji. Odlučite kako postupati sa sudarima prije stvaranja toka za pisanje, kako čišćenje nakon neuspjeha ne bi uklonilo tuđu datoteku. Namjerno nastavljanje zahtijeva vlastitu politiku.

pipeline usklađuje čitanje i pisanje i prijavljuje njihov neuspjeh. Pozivanje response.data.pipe(file) i trenutačno bilježenje uspjeha preskače tu točku dovršetka. Prekid mreže ili pun disk mogu se dogoditi nakon što je stigao valjan HTTP odgovor; sačuvajte kontekst odgovora i pogrešku koja je zaustavila obradu.

Nakon što očekivana obrada uspije, izvršite provjere artefakta aplikacije i zatim objavite konačno ime. Dovršetak znači da je stream konzumiran i zapisan pod ovim API-jima, a ne da je to očekivano izdanje ili dokument. U slučaju neuspjeha ili otkazivanja zadržite ili uklonite djelomičnu datoteku prema odabranoj politici nastavljanja. Signal otkazivanja može zaustaviti odgovarajući zahtjev i operacije toka; on ne odlučuje što aplikacija treba raditi s izlazom.

Povezani članci