我正在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);
};
你知道我该怎么做吗?
提前谢谢!
答案 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',
}
}));
};
谢谢大家的帮助!