首页 > 解决方案 > 图片未上传到 Firebase 存储桶中

问题描述

我正在尝试在我的 Firebase 存储桶中上传图片。这是我的代码:

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) => {
        if(mimetype !== 'image/jpeg' && mimetype !== 'image/jpg' && mimetype !== 'image/png') {
            return res.send(400).json({ message: 'Wrong File Submitted' })
        }
        const imageExtension = filename.split('.')[filename.split('.').length - 1]
        imageFileName = `${Math.round(Math.random() * 100000000).toString()}.${imageExtension}`
        const filepath = path.join(os.tmpdir(), imageFileName)
        imageToBeUploaded = { filepath, mimetype }
        file.pipe(fs.createWriteStream(filepath))
    })
    busboy.on('finish', () => {
        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`
            return db.doc(`/users/${req.user.handle}`).update({ imageUrl })
        }).then(() => {
            res.json({ message: 'Image Uploaded Successfully' })
        }).catch(err => {
            console.error(err)
            return res.status(500).json({ error: err.code })
        })
    })
    busboy.end(req.rawBody)
}

这里的问题是,每当我尝试上传图像时,它都会给我一个错误,即存储桶名称不正确。请帮忙。

标签: javascriptfirebasegoogle-cloud-storage

解决方案


我遇到了同样的问题,并通过在初始化应用程序时声明存储桶的名称来解决它。

// Firestore database
const admin = require('firebase-admin');
admin.initializeApp({
  storageBucket: 'storage-bucket-name'
});

添加在您的 admin sdk 中找到的存储桶名称,您应该一切顺利!


推荐阅读