Как скачать архив nodejs

Стоит задача скачать архив в указанную папку на NodeJs по ссылке которая сразу начинает скачивание, подскажите пожалуйста как это сделать не используя посторонние пакеты (или используя node-fetch)


Ответы (1 шт):

Автор решения: nörbörnën

node.js v18.11.0

import fs from 'node:fs';
import { pipeline } from 'node:stream/promises';

try {
  const res = await fetch('http://www.cbr.ru/s/newbik');
  if (!res.ok) {
    throw new Error(res.statusText || res.status);
  }

  const filename =
    res.headers.get('content-disposition')?.split(/\s*;\s*/).find((x) => x.startsWith('filename='))?.replace(/^filename=["']?|["']$/g, '')
    || 'archive.zip';

  await pipeline(
    res.body,
    fs.createWriteStream(filename)
  );
} catch (err) {
  console.error(err);
}

export {};

~/tmp/q $ ls -1
20221112ED01OSBR.zip
20221112_ED807_full.xml

В вызов pipeline можно добавить PipelineTransform и налету разархивировать загруженный архив.


Если нужен код на commonjs, можно воспользоваться моим ответом на вопрос "Скачать файл на диск с помощью axios".

→ Ссылка