我正在使用HTML和JS创建一个基本网页以将gif上传到我的Firebase存储中。
这是我的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Upload gifs</title>
</head>
<body>
<progress value="0" max="100" id="uploader">0%</progress>
<input type="file" valu="upload" id="fileButton"></input>
</body>
<script src="https://www.gstatic.com/firebasejs/7.7.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.7.0/firebase-storage.js"></script>
<script>
var firebaseConfig = {
apiKey: "",
authDomain: "",
databaseURL: "",
projectId: "",
storageBucket: "",
messagingSenderId: "",
appId: "",
measurementId: ""
};
firebase.initializeApp(firebaseConfig);
console.log(firebase);
var uploader = document.getElementById('uploader');
var fileButton = document.getElementById('fileButton');
fileButton.addEventListener('change', function(e){
var file = e.target.files[0];
var storageRef = firebase.storage().ref('gifs/' + "123");
storageRef.put(file);
task.on('state_changed',
function progress(snapshot) {
var percentage = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
uploader.value = percentage;
}
,
function error(err) {
}
)
})
</script>
</html>
我的firebase数据库的规则是:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
尽管如此,当我运行代码时,它返回403错误并指出其被禁止。我不确定为什么更改了规则以允许访问数据库,但是我仍然遇到问题。感谢您的帮助。
答案 0 :(得分:1)
您正在将Cloud Firestore(由Firebase提供的数据库服务之一)的安全规则与Cloud Storage的规则混合在一起。
您将在此处找到有关Cloud Storage安全规则的文档:https://firebase.google.com/docs/storage/security
在您的情况下,由于从您的问题来看,您似乎想允许任何人进行读写,因此您应按以下方式编写云存储规则:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write;
}
}
}