Wenn Axios eine Node-Anfrage mit responseType: 'stream' auflöst, ist der Body bereit zur Verarbeitung. Die Datei ist aber noch nicht fertig. Warten Sie die Übertragung an ihr Ziel ab:

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

Dies nutzt einen bereits konfigurierten Client. Sein Adapter muss den gewählten Proxy oder SOCKS-Agent unterstützen; die in Axios eingebaute HTTP-Proxy-Option und ein SOCKS-Agent sind getrennte Mechanismen. Die Anwendung liefert URL, Timeouts und Abbruchrichtlinie.

Verwenden Sie einen temporären Pfad, der zu dieser Operation gehört. Legen Sie den Umgang mit Kollisionen fest, bevor Sie den Schreibstream erzeugen, damit eine Bereinigung nach einem Fehler nicht die Datei eines anderen entfernt. Eine bewusste Fortsetzung braucht ihre eigene Richtlinie.

pipeline koordiniert Lesen und Schreiben und meldet deren Fehler. response.data.pipe(file) aufzurufen und sofort Erfolg zu protokollieren überspringt diesen Abschlusspunkt. Eine Netzwerkunterbrechung oder eine volle Festplatte kann eintreten, nachdem eine gültige HTTP-Antwort eingetroffen ist; bewahren Sie den Antwortkontext und den Fehler auf, der die Verarbeitung beendet hat.

Nachdem die erwartete Verarbeitung erfolgreich war, führen Sie die Artefaktprüfungen der Anwendung durch und veröffentlichen Sie dann den endgültigen Namen. Abgeschlossen bedeutet, dass der Stream unter diesen APIs verbraucht und geschrieben wurde, nicht dass es die erwartete Version oder das erwartete Dokument ist. Bei Fehler oder Abbruch behalten oder entfernen Sie die Teil-Datei gemäß der gewählten Fortsetzungsrichtlinie. Ein Abbruchsignal kann die betreffende Anfrage und Stream-Operationen stoppen; es entscheidet nicht, was die Anwendung mit der Ausgabe tun soll.

Ähnliche Artikel