Невозможно загрузить изображение в хранилище firebase с функциями firebase - PullRequest
1 голос
/ 08 ноября 2019

вот мой код: -

exports.uploadImage = (req, res) => {

    const BusBoy = require('busboy');
    const path = require('path');
    const os = require('os');
    const fs = require('fs');

    const busboy = new BusBoy({ headers: req.headers });

    let imageFileName;
    let imageToBeUploaded = {};

    busboy.on('file', (fieldname, file, filename, encoding, mimetype) => {

        const imageExtension = filename.split('.')[filename.split('.').length - 1];
        imageFileName = `${Math.round(Math.random() * 100000000000)}.${imageExtension}`;
        const filepath = path.join(os.tmpdir(), imageFileName);
        imageToBeUploaded = { filepath, mimetype };
        file.pipe(fs.createWriteStream(filepath));

    });

    busboy.on('finish', () => {

        console.log('Busboy on started');    

        //code breaks here    
        admin.storage().bucket().upload(imageToBeUploaded.filepath, {
            resumable: false,
            metadata: {
                metadata: {
                    contentType: imageToBeUploaded.mimetype
                }
            }
        })
        .then(() => {
            const imageUrl = `https://firebasestorage.googleapis.com/v0/b/${config.storageBucket}/o/${imageFileName}?alt=media`;
            console.log('logging image url' + imageUrl);
            return db.doc(`/users/${req.user.handle}`).update({ imageUrl })
        })
        .then(() => {
            return res.json({ message: 'Image uploaded successfully' });
        })
        .catch(err => {
            console.error(err);
            return res.status(500).json({ error: err.code });
        })
    });
    busboy.end(req.rawBody);
}

Я уже упоминал, где мой код ломается в комментарии, и я получаю ошибку: Error: Cannot parse response as JSON: Not Found message: 'Cannot parse response as JSON: Not Found'

Ошибкасообщение говорит, что не может разобрать ответ как JSON. Означает ли это, что ответ от firebase не является JSON? У меня есть токен в заголовке запроса и изображение в теле в виде данных формы. Я действительно не понимаю, что не так, пожалуйста, помогите

1 Ответ

0 голосов
/ 15 ноября 2019

Нашли решение проблемы!

По сути - вам нужно настроить учетные данные приложения Google. Зайди в firebase и посмотри в свои настройки. Вам нужно настроить переменную окружения GOOGLE_APPLICATION_CREDENTIALS, чтобы firebase имел ваши учетные данные при доступе к этим файлам.

https://firebase.google.com/docs/admin/setup?authuser=1 для получения дополнительной информации.

После того, как вы это сделали,проверьте настройки безопасности в firebase, в каждой области, с которой вы имеете дело. Это должно решить проблему (это определенно проблема безопасности, а не ваш код).

Это учебное пособие также для тех, кто ищет. https://www.youtube.com/watch?v=m_u6P5k0vP0&t=7661s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...