imc*_*nor 7 javascript firebase firebase-storage
你好寻求一些帮助,
我目前有一些JavaScript代码,允许已登录的用户将图像上传到Firebase存储.我希望他们上传的图片是他们的个人资料图片,但是我似乎无法将上传的图片链接回特定用户?
它工作正常,我可以在控制台中看到上传的图像,但没有什么可以识别用户上传它的内容.
//Upload Profile Picture
//Altered code from: Firebase Youtube Channel.
//Get Elements
var uploader = document.getElementById('uploader');
var fileButton = document.getElementById('fileButton');
//Listen for file
fileButton.addEventListener('change', function(e){
//Get File
var file = e.target.files[0];
//Create a Storage Ref
var storageRef = firebase.storage().ref('profilePictures/' + file.name);
//Upload file
var task = storageRef.put(file);
var user = firebase.auth().currentUser;
//Update Progress Bar
task.on('state_changed',
function progress(snapshot){
var percentage = (snapshot.bytesTransferred / snapshot.totalBytes) *100;
uploader.value = percentage;
//if percentage = 100
//$(".overlay").hide();
},
function error(err){
},
function complete(){
}
);
});
//Display Profile Picture
function showUserDetails(){
var user = firebase.auth().currentUser;
var name, photoUrl;
if (user != null) {
name = user.displayName;
photoUrl = user.photoURL;
document.getElementById('dp').innerHTML=photoURL;
document.getElementById('username').innerHTML=name;
}}
Run Code Online (Sandbox Code Playgroud)
我在Firebase文档中看到了下面的代码,但我不明白如何更新照片URL图像或显示它.
var user = firebase.auth().currentUser;
var name, email, photoUrl, uid;
if (user != null) {
name = user.displayName;
email = user.email;
photoUrl = user.photoURL;
uid = user.uid; // The user's ID, unique to the Firebase project. Do NOT use
// this value to authenticate with your backend server, if
// you have one. Use User.getToken() instead.
}
Run Code Online (Sandbox Code Playgroud)
非常感谢您的任何帮助或建议.
Mik*_*ald 16
您需要按用户名存储文件:
// Get current username
var user = firebase.auth().currentUser;
// Create a Storage Ref w/ username
var storageRef = firebase.storage().ref(user + '/profilePicture/' + file.name);
// Upload file
var task = storageRef.put(file);
Run Code Online (Sandbox Code Playgroud)
因此,如果用户是user:12345,文件名是profile.jpg,则文件将保存为user:12345/profilePicture/profile.jpg.您可以使用安全规则保护它,如下所示:
service firebase.storage {
match /b/<your-firebase-storage-bucket>/o {
match /{userId}/profilePicture/{fileName} {
// Anyone can read
allow read;
// Only the user can upload their own profile picture
// Profile picture must be of content-type "image/*"
allow write: if request.auth.uid == userId
&& request.resource.contentType.matches('image/.+');
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13475 次 |
| 最近记录: |