【问题标题】:Imagen with 0 bytes in Firebase-storage upload from Node js从 Node js 上传的 Firebase 存储中 0 字节的图像
【发布时间】:2019-05-22 04:42:54
【问题描述】:

我正在尝试从 Node.js 将图像上传到 Firebase-storage, 我按照以下内容在他们的文档中提供了 firebase 并且运行良好,但是当图像在存储中时,大小为 0 字节,您看不到预览。

这是我的代码:

const uploadImageToStorage = (file,filename) => {
    let prom = new Promise((resolve, reject) => {
        if (!file) {
            reject('No image file');
        }
        let newFileName = `${file.originalname}_${Date.now()}`;
        let fileUpload = bucket.file(newFileName);
        const blobStream = fileUpload.createWriteStream({
            metadata: {
                contentType: file.mimetype
            }
        });

        blobStream.on('error', (error) => {
            reject('Something is wrong! Unable to upload at the moment.');
        });

        blobStream.on('finish', () => {
            // The public URL can be used to directly access the file via HTTP.
            const url = `https://storage.googleapis.com/${bucket.name}/${fileUpload.name}`;
            resolve(url);
        });

        blobStream.end(file.buffer);
    });
    return prom;
}

这是我的 app.post 方法:

app.post('/Upload_img',multer.single("file"), function (req, res) {

    console.log("Upload Imagennes");
    let url = "";
    let file= req.file;
    if (file) {
        uploadImageToStorage(file,file.name).then((success) => {
            url = success;
            res.status(200).send(url);
        }).catch((error) => {
            console.error(error);
        });
    }



}

存储:

【问题讨论】:

    标签: node.js firebase-storage firebase-admin


    【解决方案1】:

    我设法使用您的 uploadImageToStorage 函数上传了一个 png 文件。我直接调用它,没有使用multer

    (async () => {
      const buffer = fs.readFileSync('./android.png');
      const file = {
        originalname: 'android.png',
        mimetype: 'image/png',
        buffer,
      }
      try {
        return await uploadImageToStorage(file, file.originalname);
      } catch (err) {
        console.log(err);
      }
    })();
    

    这按预期工作。所以问题可能出在您的 Express.js 代码或 multer 中。尝试在服务器代码中记录req.filereq.file.buffer,看看它是否有预期的数据。

    【讨论】:

      猜你喜欢
      • 2019-07-22
      • 2021-07-24
      • 2020-03-21
      • 2015-05-21
      • 2018-07-04
      • 2020-06-26
      • 2021-04-07
      • 2020-07-10
      • 1970-01-01
      相关资源
      最近更新 更多