Ответы пользователя по тегу Яндекс.Облако
  • Как загрузить в бакет Yandex Cloud файл, используя axios nodejs?

    В твоем коде есть несколько моментов, которые нужно исправить, чтобы загрузить файл в бакет 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 настройки.
    Ответ написан
    2 комментария