Javascript 将图像上载到firebase并在数据库中设置链接
我知道如何将数据添加到firebase数据库,我知道如何将图像上载到firebase存储。我正在用javascript做这件事 我不知道如何将图像链接到我的数据库对象 我的数据库对象是这样的Javascript 将图像上载到firebase并在数据库中设置链接,javascript,firebase,firebase-realtime-database,firebase-storage,Javascript,Firebase,Firebase Realtime Database,Firebase Storage,我知道如何将数据添加到firebase数据库,我知道如何将图像上载到firebase存储。我正在用javascript做这件事 我不知道如何将图像链接到我的数据库对象 我的数据库对象是这样的 { name:'alex', age:23, profession:'superhero' image:*what to put here ???* } 一个想法是使用创建的对象引用,并使用相同的引用存储图像 任何指导或想法都值得欣赏 我们通常建议存储gs://bucket/path/to/object引
{
name:'alex',
age:23,
profession:'superhero'
image:*what to put here ???*
}
一个想法是使用创建的对象引用,并使用相同的引用存储图像
任何指导或想法都值得欣赏 我们通常建议存储
gs://bucket/path/to/object
引用,否则存储https://...
URL
请参阅并与其关联(此处我们使用https://...
version),以获取实际示例
var storageRef = firebase.storage().ref('some/storage/bucket');
var saveDataRef = firebase.database().ref('users/');
var uploadTask = storageRef.put(file);
uploadTask.on('state_changed', uploadTick, (err)=> {
console.log('Upload error:', err);
}, ()=> {
saveDataRef.update({
name:'alex',
age:23,
profession:'superhero'
image:uploadTask.snapshot.downloadURL
});
});
此上载函数位于ES6类中,并从调用组件为.on('state_changed')传递回调(uploadTick)。这样,您可以传回上传状态并在UI中显示
uploadTick(snap){
console.log("update ticked", snap)
this.setState({
bytesTransferred:snap.bytesTransferred,
totalBytes:snap.totalBytes
})
}
要上载的文件被传递到此上载函数,但我只是使用react表单上载来获取文件并对其进行一些处理,您的方法可能会有所不同。当图像完成上载到存储器时,使用函数将链接写入数据库。或者,按照下面的示例,在PutFileAsync()完成时执行一次db写入。这里有什么问题?你试过什么?什么平台?仅供参考-上的最后一个示例演示了上载图像并将结果存储在DB中。还有web/ios版本。可移植性和安全性。任何存储客户端(Firebase或Google云存储)都可以从gs URI创建下载URL,而目前,https URL更特定于Firebase。此外,https URL可以公开访问,而gs URI需要安全规则或IAM检查来检索下载URL或内容。