Axios повернув потік. Файл ще записується.
Чекайте і читання з мережі, і запису в місце призначення, коли завантажуєте через агент SOCKS з Axios у Node.
Коли Axios розв'язує запит Node з responseType: 'stream', тіло готове до використання. Але файл ще не завершено. Дочекайтеся перенесення до місця призначення:
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));Тут використовується вже налаштований клієнт. Його адаптер має підтримувати вибраний проксі або агент SOCKS; вбудована опція HTTP-проксі в Axios і агент SOCKS — різні механізми. URL, тайм-аути й політику скасування задає застосунок.
Використовуйте тимчасовий шлях, що належить цій операції. Вирішіть, як обробляти колізії, перш ніж створювати потік запису, щоб очищення після збою не видалило чужий файл. Усвідомленому відновленню потрібна власна політика.
pipeline координує читання й запис і повідомляє про їхню невдачу. Виклик response.data.pipe(file) і негайний запис успіху в журнал пропускають цю точку завершення. Обрив мережі або переповнений диск можуть статися вже після прибуття коректної відповіді HTTP; зберігайте контекст відповіді та помилку, що зупинила обробку.
Після успішного завершення очікуваної обробки виконайте перевірки артефакту застосунку, а потім опублікуйте остаточну назву. Завершення означає, що потік було спожито й записано в межах цих API, а не те, що це очікуваний випуск чи документ. У разі збою або скасування збережіть або видаліть частковий файл згідно з обраною політикою відновлення. Сигнал скасування може зупинити відповідний запит і операції з потоком; він не вирішує, що застосунок має робити з результатом.