google-cloud-platform - Firebase 存储错误:权限被拒绝。无法访问存储桶 my-bucket-name
问题描述
使用 Angular 7,我正在尝试使用 Angularfire2 上传图像
ts
uploadFile(event) {
const file = event.target.files[0];
const filePath = 'name-your-file-path-here';
const ref = this.storage.ref(filePath);
const task = ref.put(file);
}
html
<input type="file" (change)="uploadFile($event)">
得到以下错误:
POST https://firebasestorage.googleapis.com/v0/b/my-bucket-name/o?name=name-your-file-path-here 400
{ "error": { "code": 400, "message": "Permission denied. 无法访问存储桶 my-bucket-name。请通过访问 Firebase 控制台中的存储选项卡为您的存储桶启用 Firebase 存储,并确保您有足够的权限来适当地提供资源。” } }
我已阅读我必须在firebase-storage@system.gserviceaccount.com
控制台中添加为存储管理员,但这并没有解决问题。
我在 Firebase 存储中的规则是:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write;
}
}
}
有任何想法吗?
解决方案
如果我没记错您使用的是 AngularFire 并且在他们的文档中,您会看到它们my-bucket-name
在提供程序声明中用作占位符。将此替换为您的存储桶名称(我假设它在您的环境变量中)。
@NgModule({
declarations: [],
imports: [],
providers: [
{ provide: BUCKET, useValue: environment.firebase.storageBucket },
],
bootstrap: []
})
推荐阅读
- python - Python 字典列表到新字典或列表
- javascript - Firebase Firestore Javascript 数组为空,即使它不在 console.log 上
- string - OCaml 中 Sting.map 和 String.mapi 的区别
- java - Jaxb-impl& jaxb-runtime 的 Tomcat 9 类加载问题
- sql - DATE BETWEEN 问题
- excel - 在 VBA 中嵌套 For 循环
- python - 在python中解析登录
- haskell - 安装后异步库不存在
- c# - MongoDB Fluent 聚合条件阶段
- java - 如何在用户控制台输入的可观察列表上执行操作?