Как загрузить файл из интернета на Node JS сервер?

Для загрузки файла из интернета на сервер Node.js можно использовать различные подходы в зависимости от требований и среды выполнения. Один из самых популярных способов - использование модуля request или его обновленной версии axios для выполнения HTTP-запросов и получения содержимого файла.

Установка зависимостей:

npm install request

или

npm install axios

Импортируем модуль request или axios, в зависимости от выбранного подхода:

const request = require('request');
или
const axios = require('axios');

После этого, можно выполнить GET-запрос и сохранить содержимое файла на сервере. Вот пример с использованием модуля request:

request('http://www.example.com/file.jpg', { encoding: null }, (error, response, body) => {
  if (error) {
    console.error(error);
  } else {
    const fs = require('fs');
    fs.writeFile('path/to/save/file.jpg', body, (err) => {
      if (err) {
        console.error(err);
      } else {
        console.log('Файл успешно загружен.');
      }
    });
  }
});

В примере выше, мы отправляем GET-запрос на URL http://www.example.com/file.jpg с опцией { encoding: null }, чтобы получить содержимое файла в виде буфера. Затем мы используем модуль fs для сохранения буфера в файле с указанным путем и именем.

Если вы предпочитаете использовать модуль axios, вот пример, как это может выглядеть:

axios({
  method: 'get',
  url: 'http://www.example.com/file.jpg',
  responseType: 'stream',
})
  .then((response) => {
    const fs = require('fs');
    const writer = fs.createWriteStream('path/to/save/file.jpg');
    response.data.pipe(writer);
    writer.on('finish', () => {
      console.log('Файл успешно загружен.');
    });
  })
  .catch((error) => {
    console.error(error);
  });

В данном примере мы используем метод axios.get() с параметрами url для указания URL файла и responseType: 'stream', чтобы получить ответ в виде потока данных. Затем мы создаем поток записи с помощью модуля fs и позваем метод pipe() для передачи данных из полученного потока в поток записи. Как только запись завершена, мы выводим сообщение о успешной загрузке файла.

В обоих примерах указан путь path/to/save/file.jpg, который можно заменить на желаемый путь сохранения на сервере.

Таким образом, вы можете загружать файлы из интернета на сервер Node.js, используя модуль request или axios. Выбор подхода зависит от ваших предпочтений и требований проекта.