【发布时间】:2021-04-10 19:00:15
【问题描述】:
我正在尝试创建一个 Firebase 函数,该函数允许我传入一组图像 URL 以创建蒙太奇,将文件上传到 Firebase 存储,然后返回生成的下载 URL。这将从我的应用程序中调用,因此我使用的是functions.https.onCall。
const functions = require("firebase-functions");
const admin = require('firebase-admin');
var gm = require('gm').subClass({imageMagick: true});
admin.initializeApp();
exports.createMontage = functions.https.onCall((data, context) => {
var storageRef = admin.storage().bucket( 'gs://xyz-zyx.appspot.com' );
var createdMontage = storageRef.file('createdMontage.jpg');
function generateMontage(list){
let g = gm()
list.forEach(function(p){
g.montage(p);
})
g.geometry('+81+81')
g.density(5000,5000)
.write(createdMontage, function(err) {
if(!err) console.log("Written montage image.");
});
return true
}
generateMontage(data)
return createdMontage.getDownloadURL();
});
函数 generateMontage() 在 NodeJs 上本地工作(具有本地写入目标)。
谢谢。
【问题讨论】:
-
我认为您应该在SO 上查看此相关问题。提到您尝试访问的存储对象没有 ref() 函数,只有 app 和 bucket()。
-
我试过
bucket()。答案中的第一个链接已失效。当我点击 API 并发现:cloud.google.com/storage/docs/samples/storage-upload-file,这 1) 似乎没有通过admin和 2) 这意味着我必须命名并上传一个文件。我不知道如何.write(filename) -
文件会在公用文件夹中吗?如
allow read;中的存储规则。 -
我一般都能发帖。只是不在这个。这不是规则问题。
标签: firebase google-cloud-functions google-cloud-storage firebase-storage