如何使用Firebase Realtime数据库和React Native上传图像/文件?

时间:2019-05-15 15:57:43

标签: javascript firebase react-native firebase-realtime-database upload

我正在开发一个React Native项目,并且正在使用Firebase实时数据库。

我想维护一个用户个人资料页面。为此,我需要将用户个人资料图像上传到Firebase数据库。当我查看用户个人资料时,我应该能够看到带有相关用户个人资料图像的用户个人资料。我也应该能够更新和删除用户个人资料图片。

使用GCS(Google云存储)存储图像/文件并使用Firebase Realtime数据库存储URL也是可以的。

我只需要最好的解决方案。

我遇到了一些类似的问题,但仍然对这样做的明确方法感到困惑。

您能否解释一下并告诉我如何在React Native中做到这一点?

1 个答案:

答案 0 :(得分:2)

我想在我的辅助项目中共享一些代码,该代码实现了您上面提到的功能。但是,很抱歉,无法完全访问该项目的源代码。

步骤1.在用户提交图像时上传图像文件。

class PGroup {
  constructor(members) {
    this.members = members;
  }

  add(value) {
    if (this.has(value)) return this;
    return new PGroup(this.members.concat([value]));
  }

  delete(value) {
    if (!this.has(value)) return this;
    return new PGroup(this.members.filter(m => m !== value));
  }

  has(value) {
    return this.members.includes(value);
  }
}

PGroup.empty = new PGroup([]);

let a = PGroup.empty.add("a");
let ab = a.add("b");
let b = ab.delete("a");

步骤2。在调用import firebase from 'react-native-firebase'; const upload = async (filepath: string, filename: string, filemime: string) => { const metaData = { contentType: filemime }; const res = await firebase .storage() .ref(`gcs-folder-name-here/${filename}`) .putFile(filepath, metaData); // put image file to GCS return res; }; 函数之后,您应该能够从响应中检索图像URL,并将其保存回Firebase实时数据库。

upload

希望这会有所帮助。