Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将图像上载到firebase并在数据库中设置链接_Javascript_Firebase_Firebase Realtime Database_Firebase Storage - Fatal编程技术网

Javascript 将图像上载到firebase并在数据库中设置链接

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引

我知道如何将数据添加到firebase数据库,我知道如何将图像上载到firebase存储。我正在用javascript做这件事

我不知道如何将图像链接到我的数据库对象

我的数据库对象是这样的

{
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或内容。