从Firebase数据库功能将图像存储在Firebase存储中

时间:2019-03-21 16:17:23

标签: firebase firebase-realtime-database google-cloud-functions

我正在Firebase中构建应用程序,并试图从实时数据库功能中在Firebase存储中插入图像。

在数据库中插入记录时触发该功能。

记录中包含图片网址。

我了解的是,我需要读取此图像以获取base64字符串并将该字符串作为图像存储在Firebase Storage中,但我不知道如何实现。

似乎我无法访问该函数内的Firebase存储对象,只能通过admin.storage().bucket()访问存储桶,而找不到任何函数(如存储对象中的put()) ),让我可以将base64字符串作为图像放入Firebase存储中。

到目前为止,我尝试以这种方式存储图像但没有成功:

const admin = require('firebase-admin');
const serviceAccount = require('./serviceAccountKey.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  storageBucket: 'gs://my-bucket.appspot.com',
});

exports.handler = (event) => {
  const myBase64Image = 'someImageInBase64';
  admin.storage().bucket('folder').file('test').save(myBase64Image);
};

你知道我该怎么做吗?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

好,我终于做到了!

这就是我的处理程序最终的样子:

const admin = require('firebase-admin');
const request = require('request');

exports.handler = (event, context) => {
  const record = event.after.val();
  const storage = admin.storage.bucket();
  const file = bucket.file('path_to_image.jpg');

  return request(record.pictureUrl).pipe(file.createWriteStream({
    metadata: {
      contentType: 'image/jpeg',
    }
  }));
};

谢谢大家的帮助!