我正在处理我的离子1 App中的个人资料图片。我正在寻找一种方法来更新firebase存储中的文件,以便下载链接保持不变。 是否有可能或以任何其他方式达到要求?
答案 0 :(得分:1)
您无法更新文件并维护相同的公共下载链接 - 它是一个不同的文件,因此您可能希望更改访问权限
只需重新获取网址并在文件更新后下载该文件(它在上传时返回的元数据中实际返回,因此您可以在更改后立即将其发送到其他应用,无需单独获取URL:
var file = ... // use the Blob or File API
ref.put(file).then(function(snapshot) {
var url = snapshot.downloadURL;
});
答案 1 :(得分:1)
嘿,我最近正在处理类似的事情。根据文档,没有直接的方法来覆盖现有文件,但我确实找到了一种方法来执行此操作并检索新的 url。这是我存储和更新的方式。
const storeFile = async (file) => {
const ref = firebase.firestore.collection('bin').doc();
const id = ref.id;
const storageRef = firebase.storage().ref().child('bin/' + id)
await storageRef.put(file)
}
const updateFile = async (id, file) => {
const storageRef = firebase.storage().ref('/path').child(id);
// Put the new file in the same child ref.
await storageRef.put(file);
// Get the new URL
const url = await storageRef.getDownloadURL();
return url;
}
答案 2 :(得分:0)
正如另一个答案所说,基本上你不能在不改变权限的情况下更新图像。
但是,如果您更改了存储图像路径的规则,请说
allow read: if true;
allow write: if request.auth != null;
这基本上使得任何有链接的人都可以看到图像。这样您就可以从旧的下载链接中看到新图像。
但请注意,这也意味着拥有此链接的任何人都可以看到图片,而不仅仅是应用中的人。
答案 3 :(得分:0)
文件更新应在https://console.cloud.google.com/storage上进行,并用相同的名称替换文件后,应使用 firebaseStorageDownloadTokens 键和以前使用的令牌来更新其元数据。