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, а не то, что это ожидаемый выпуск или документ. При сбое или отмене сохраните или удалите частичный файл согласно выбранной политике возобновления. Сигнал отмены может остановить соответствующий запрос и операции с потоком; он не решает, что приложению делать с результатом.