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

时间:2017-03-16 16:17:59

标签: javascript firebase firebase-realtime-database firebase-storage

我知道如何将数据添加到firebase数据库,我知道如何将图像上传到firebase存储。我在javascript中这样做。

我无法弄清楚如何将图像链接到我的数据库对象。

我的数据库对象是这样的

{
name:'alex',
age:23,
profession:'superhero'
image:*what to put here ???*
}

一个想法是使用创建的对象引用并使用相同的引用存储图像。

赞赏任何教程或想法。

2 个答案:

答案 0 :(得分:2)

我们经常建议存储gs://bucket/path/to/object引用,否则存储https://...网址。

请参阅Zero to App,并将其与source code相关联(此处我们使用https://...版本)作为实际示例。

答案 1 :(得分:0)

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
   })
}

要上传的文件会传递给此上传功能,但我只是使用反应表单上传获取文件并对其进行一些处理,您的方法可能会有所不同。