是否可以编写一个Firebase云函数来触发何时在Firebase存储中创建新的fila-onFinalize(但我们事先不知道确切的存储桶)?
在我的Firebase存储中,有一个文件夹“ loads”,而在我中,有一个名为load id的文件夹,例如:
https://ibb.co/NnQkTyC这是存储的屏幕截图
当在这些文件夹之一中创建新文件时,我想触发云功能。我不知道andvance将在哪里创建文件。我不知道这是否有可能。这就是为什么我需要一个建议。
我的主要目标是将2个pdf文件合并到一个云功能中。在前端的应用程序(用vuejs编写的TMS)中,我使用html2canvas / jsPDF创建confirmationOrder.pdf,然后将其保存到storage / loads / $ {loadID}。之后,用户可以在同一存储桶上手动上传POD.pdf。当发生这种情况时,我希望我的云功能将这两个pdf合并到一个新文件中(在同一存储桶中)。但是我又一次不知道这个桶。
这是我在前端上传PDF的方法:
async uploadConfPDF({ commit }, payload) {
const PDF = payload.PDF;
const loadID = payload.loadID;
const fileName = payload.fileName;
const fileData = await firebase
.storage()
.ref(`loads/${loadID}/${fileName}.pdf`)
.put(PDF);
const confOrderURL = await fileData.ref.getDownloadURL();
return confOrderURL;
},
非常感谢您的帮助。对不起,如果我的解释似乎不够清楚。英语不是我的母语。
修改您的问题后再进行编辑
根据您的代码和Cloud Storage控制台的打印屏幕,您正在项目的默认存储区中工作,该位置的URL为gs://alex-logistics.appspot.com
。
正如我们在Cloud Storage控制台的打印屏幕上看到的那样,存储桶中的文件以分层结构显示,就像本地硬盘上的文件系统一样。但是,这只是呈现文件的一种方式:存储桶中没有真正的文件夹/目录,Cloud Storage控制台仅使用文件路径的不同部分来“模拟”文件夹结构。
因此,基于以上几段,我认为您的问题可以重新表述为“在Cloud Function中,如何提取上传到Firebase项目默认存储区的文件路径的不同部分? ”。
回答:
在将文件添加到默认存储桶时触发的云功能中,您可以按照以下方式获取文件路径:
exports.yourCloudFunction = functions.storage.object().onFinalize(async (object) => {
const filePath = object.name; // File path in the bucket.
//...
});
由于我们使用onFinalize
事件处理程序,因此您可以使用类型name
为的object
Object属性来获取此新文件的路径ObjectMetadata
。
然后,您可以使用某些String
方法来从该路径中提取${loadID}
您在问题中所指的内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句