twe*_*ypi 5 firebase google-cloud-functions firebase-storage
我正在将文件上传到Firebase存储,如下所示:
var storageRef = firebase.storage();
var fileRef = storageRef.ref(file.name);
fileRef.put(file)
.then(function (snapshot) {
console.log('Uploaded a blob or file!');
window.URL.revokeObjectURL(file.preview);
})
Run Code Online (Sandbox Code Playgroud)
上传后,我有一个firebase存储触发器:
export const processUploadedFile = functions.storage.object().onChange(event => {
}
Run Code Online (Sandbox Code Playgroud)
我想做的是在原始上传文件中上传一些其他信息,以便processUploadedFile知道如何处理(例如,提取文件,将其移动到特殊目录等)。
我试着像这样使用元数据:
var newMetadata = {
customMetadata: {
"Test": "value"
}
}
fileRef.put(file, newMetadata)
Run Code Online (Sandbox Code Playgroud)
但是在云存储触发功能上,我不知道如何获取元数据,我这样注销了fileMetaData:
file.getMetadata().then((metaData)=>console.log(metaData))
Run Code Online (Sandbox Code Playgroud)
但是在其中的任何地方(或在返回未定义的fileMetaData [0] .metadata中)都没有看到我的元数据。
不确定如何实现此目标...
我认为提供文件元信息将解决问题。这是参考。Firebase存储文件元数据。您可以使用customMetadata传递文件的自定义参数。例如 :
customMetadata: {
'actionType': 'ACTION_CODE',
'action': 'do something info'
}
Run Code Online (Sandbox Code Playgroud)
您可以使用存储触发器访问此元数据,并采取相应的措施。这是实现自动提取图像元数据的方法
我相信有些属性无法更改,因为它们不可写。但是,如果您确实想将自定义数据添加到 firebase 存储,则可以将自定义元数据设置为包含 String 属性的对象。例如:
var myCustomMetadata = {
customMetadata : {
'file_name': 'this is the file name'
}
}
Run Code Online (Sandbox Code Playgroud)
在上述情况下,file_name是您要创建的自定义元数据。
在 Firebase 存储中创建对文件的引用后,您可以对该引用调用updateMetadata()方法。
例如:
使用 downloadUrl 获取对图像文件的引用:
var myCustomMetadata = {
customMetadata : {
'file_name': 'this is the file name'
}
}
Run Code Online (Sandbox Code Playgroud)
使用参考更新元数据:
getRef.updateMetadata(myCustomMetadata).then(()=>{
//do other things
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2353 次 |
最近记录: |