仅当Firebase存储上尚不存在资源时才允许写入

时间:2016-06-24 15:42:05

标签: firebase firebase-storage

我正在尝试设置Firebase安全规则,以便仅在尚不存在具有相同名称的文件时才上传文件。理想情况下,当新文件的内容与现有文件相同时,我想支持覆盖文件。

我尝试了以下内容:

allow write: if !resource;

allow write: if !resource.size;

allow write: if request.resource.md5hash == resource.md5hash;

但似乎都没有做到这一点。他们所做的只是禁止任何上传。

2 个答案:

答案 0 :(得分:2)

我想你想要这些的组合:

service firebase.storage {
  match /b/<your-bucket>/o {
    match /path/to/file {
      // !resource allows the upload of a new file
      // hash comparison allows re-upload of the same file
      allow write: if !resource || request.resource.md5hash == resource.md5hash;
    }
  }
}

答案 1 :(得分:0)

改为使用resource == null

这确实是文档中所缺少的,但是在md5注释下为mentioned

  

注意:MD5哈希冲突是可能的,并且即使存在上述规则,也可能允许某人覆盖文件。考虑使用其他文件验证或其他规则来强制执行不变性(例如allow write: if resource == null;