Gdy Axios rozwiąże żądanie Node z responseType: 'stream', treść jest gotowa do użycia. Plik nie jest jednak jeszcze kompletny. Poczekaj na przeniesienie do miejsca docelowego:

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

To używa już skonfigurowanego klienta. Jego adapter musi obsługiwać wybrany serwer proxy lub agenta SOCKS; wbudowana opcja proxy HTTP w Axiosie i agent SOCKS to oddzielne mechanizmy. URL, limity czasu i zasady anulowania dostarcza aplikacja.

Użyj ścieżki tymczasowej należącej do tej operacji. Zdecyduj, jak obsłużyć kolizje, zanim utworzysz strumień zapisu, aby sprzątanie po błędzie nie usunęło czyjegoś pliku. Zamierzone wznowienie wymaga własnych zasad.

pipeline koordynuje odczyt i zapis oraz zgłasza ich błąd. Wywołanie response.data.pipe(file) i natychmiastowe zalogowanie sukcesu pomija ten punkt zakończenia. Przerwa w sieci lub pełny dysk mogą wystąpić po odebraniu prawidłowej odpowiedzi HTTP; zachowaj kontekst odpowiedzi i błąd, który zatrzymał przetwarzanie.

Gdy oczekiwane przetwarzanie się powiedzie, wykonaj kontrole artefaktu aplikacji, a następnie opublikuj ostateczną nazwę. Ukończenie oznacza, że strumień został zużyty i zapisany w ramach tych API, a nie że to oczekiwane wydanie lub dokument. Przy błędzie lub anulowaniu zachowaj lub usuń plik częściowy zgodnie z wybranymi zasadami wznawiania. Sygnał anulowania może zatrzymać odpowiednie żądanie i operacje strumienia; nie decyduje, co aplikacja ma zrobić z wynikiem.

Powiązane artykuły