Для создания 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.
Надеюсь, это помогло! Если у вас возникнут дополнительные вопросы, пожалуйста, не стесняйтесь задавать их.