Как сделать progress bar при загрузке файла Axios, AWS s3?

Для создания progress bar при загрузке файла с использованием библиотеки Axios и сервиса хранения данных Amazon S3 в Node.js, следуйте этим шагам:

1. Установка зависимостей
Вам потребуется установить пакеты axios, aws-sdk и progress.

npm install axios aws-sdk progress

2. Настройка AWS S3
Вам понадобятся достоверные учетные данные AWS S3 (ключ доступа и секретный ключ) для доступа к вашему бакету S3. Убедитесь, что у вас есть доступ к загрузке файла в ваш бакет.

3. Создание функции загрузки

const axios = require('axios');
const AWS = require('aws-sdk');
const ProgressBar = require('progress');

async function uploadFileToS3(fileUrl, s3BucketName, s3Key) {
  // Создание экземпляра S3-клиента
  const s3 = new AWS.S3({apiVersion: '2006-03-01'});

  // Получение информации о размере файла
  const response = await axios.head(fileUrl);
  const fileSize = Number(response.headers['content-length']);

  // Создание прогресс бара
  const progressBar = new ProgressBar('Uploading [:bar] :percent :etas', {
    complete: '=',
    incomplete: ' ',
    width: 20,
    total: fileSize,
  });

  // Создание потока чтения файла
  const fileStream = axios.get(fileUrl, { responseType: 'stream' }).data;

  // Загрузка файла в S3
  const params = {
    Bucket: s3BucketName,
    Key: s3Key,
    Body: fileStream,
  };

  await s3.upload(params).on('httpUploadProgress', (progress) => {
    // Обновление прогресс бара при получении обновления прогресса от S3
    progressBar.tick(progress.loaded - progressBar.curr);
  }).promise();

  console.log('File uploaded successfully!');
}

4. Запуск функции загрузки
Вызовите функцию uploadFileToS3, указав URL файла, имя бакета S3 и ключ объекта S3.

const fileUrl = 'https://example.com/file.jpg';
const s3BucketName = 'myS3Bucket';
const s3Key = 'uploads/file.jpg';

uploadFileToS3(fileUrl, s3BucketName, s3Key)
  .catch((error) => {
    console.error('An error occurred:', error);
  });

Вышеуказанный код загружает файл с fileUrl в бакет S3 с именем s3BucketName и ключом s3Key. Он также создает прогресс бар для отслеживания процесса загрузки, который будет обновляться при получении обновления прогресса от S3.

Убедитесь, что у вас есть правильная конфигурация AWS SDK (например, переменные окружения или файлы настроек AWS) для авторизации запросов к S3. Если ваши учетные данные AWS не настроены автоматически, вам следует обновить их в коде или использовать другие методы аутентификации, которые предоставляет AWS SDK.

Надеюсь, это помогло! Если у вас возникнут дополнительные вопросы, пожалуйста, не стесняйтесь задавать их.