Скачать файл на диск с помощью axios

Есть ссылка вида

https://api.telegram.org/file/bot<token>/photos/filename.jpg

При переходе по ней браузер открывает окно, где нужно сохранить файл. Ссылка кратковременная, поэтому мне нужно перейти по ней и скачать файл себе на комп. В конкретную папку например. И все это нужно делать в боте, автоматически. Т.е. нужно каким-то образом настроить запрос GET, который будет скачивать файл по ссылке в указанную папку.

Я слышал, что это можно сделать с помощью axios, но решения найти не могу.


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

Автор решения: nörbörnën
const fs = require('fs');
const stream = require('stream/promises');
const { default: axios } = require('axios');

(async () => {
  const { data } = await axios.get(
    'https://api.telegram.org/file/bot/photos/filename.jpg',
    { responseType: 'stream' },
  );

  const writeStream = fs.createWriteStream(
    path.join(__dirname, './filename.jpg')
  );
  await stream.pipeline(data, writeStream).catch(console.error);
})();

Другие способы дождаться окончания записи я написал тут.

Имя файла можно извлечь вызовом path.basename.

→ Ссылка