В твоем коде есть несколько моментов, которые нужно исправить, чтобы загрузить файл в бакет Yandex Cloud с использованием axios в Node:
1) Метод загрузки: не GET, а PUT. Для загрузки файла нужно использовать PUT.
2) Передача файла: нужно передать содержимое файла в теле запроса, у тебя только заголовки.
3) Content-Type: Указанный вами Content-Type должен соответствовать типу загружаемого файла. Ты указал 'image/jpeg', убедись, что это действительно соответствует типу файла.
Пример кода для загрузки файла может выглядеть так:
const axios = require('axios');
const fs = require('fs').promises;
const path = require('path');
// Информация о файле и бакете
const yandexApiKey = '**********************************';
const bucketName = 'speech-bucket2';
const objectName = args.fileName;
(async () => {
try {
const filePath = path.join(__dirname, `../imgs/${args.fileName}`);
const audioBytes = await fs.readFile(filePath);
const uploadUrl = `http://${bucketName}.storage.yandexcloud.net/${objectName}`;
// Используем метод PUT для загрузки файла
const response = await axios.put(uploadUrl, audioBytes, {
headers: {
'Authorization': `Api-Key ${yandexApiKey}`,
'Content-Type': 'image/jpeg', // Убедитесь, что это правильный MIME-тип для вашего файла
},
});
console.log('Файл успешно загружен:', response.data);
} catch (error) {
console.error('Ошибка при загрузке файла:', error.message);
}
})();
Проверь еще следующее:
- Убедись, что путь к файлу и его MIME-тип указаны правильно.
- Проверьте, что API ключ и настройки доступа к бакету настроены корректно.
- Возможно, потребуется дополнительно настроить CORS настройки.