Firebase存储规则中的customMetadata
用于在上传文件时添加自定义元数据。如果你发现customMetadata
不起作用,可能有以下原因:
确保你的存储规则语法正确。以下是一个基本的示例,展示了如何使用customMetadata
:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
// 添加自定义元数据
function addCustomMetadata(metadata) {
metadata.customField = "customValue";
return metadata;
}
// 在上传时调用函数
onUpload(addCustomMetadata(request.resource.metadata));
}
}
}
确保你在客户端代码中正确设置了自定义元数据。以下是一个示例,展示了如何在JavaScript中上传文件并添加自定义元数据:
const storageRef = firebase.storage().ref();
const fileRef = storageRef.child('path/to/file');
const metadata = {
customField: 'customValue'
};
fileRef.put(file, metadata)
.then(() => {
console.log('File uploaded with custom metadata');
})
.catch((error) => {
console.error('Error uploading file:', error);
});
确保你的存储规则已经正确部署到Firebase控制台。你可以通过以下步骤检查和部署规则:
确保你的规则允许上传文件并修改元数据。例如,如果你的规则不允许写入操作,那么自定义元数据将无法被添加。
查看Firebase控制台的日志和错误信息,以获取更多关于为什么customMetadata
不起作用的线索。
以下是一个完整的示例,展示了如何在Firebase存储规则中添加和使用自定义元数据:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
function addCustomMetadata(metadata) {
metadata.customField = "customValue";
return metadata;
}
onUpload(addCustomMetadata(request.resource.metadata));
}
}
}
const storageRef = firebase.storage().ref();
const fileRef = storageRef.child('path/to/file');
const metadata = {
customField: 'customValue'
};
fileRef.put(file, metadata)
.then(() => {
console.log('File uploaded with custom metadata');
})
.catch((error) => {
console.error('Error uploading file:', error);
});
领取专属 10元无门槛券
手把手带您无忧上云