我们如何更新Firebase云存储中的现有映像?

时间:2019-12-23 14:22:19

标签: javascript reactjs firebase react-native firebase-storage

我在RN应用中使用了react-native-firebase lib

并且我使用Firebase Storage将图像保存在云中,因此可以很好地工作,但是

在配置文件屏幕中,我有一个编辑功能,该功能将旧映像替换为新映像,但只是将新映像添加到Firebase Cloud Storage中而没有替换

那么有什么方法可以用新的替换旧的?

因为当用户更改其图像配置文件时,我不想增加存储空间

S

这是我保存新图片配置文件的功能

 EditImg = async () => {
    const {uid, avatar} = this.state;
    let providerRef = database().ref(`Providers/users/${uid}`);
    const path = 'Avatar_' + new Date().getTime() + '.jpg';
    const ref = storage().ref(`providers/${uid}/providerGalary/${path}`);
    await ref.putFile(avatar).then(() => {
      ref.getDownloadURL().then(
        img => {
          console.log('img', img);
          providerRef
            .update({
              avatar: img,
            })
            .then(() => console.log('saved to Db Successfully'));
        },
        error => console.log(error),
      );

    });
  };

1 个答案:

答案 0 :(得分:1)

更改此:

const path =  'Avatar_' + new Date().getTime() + '.jpg';
    const ref = storage().ref(`providers/${uid}/providerGalary/${path}`);
    await ref.putFile(avatar).then(() => {

对此:

const path =  'Avatar_' + uid + '.jpg';
    const ref = storage().ref(`providers/${uid}/providerGalary/${path}`);
    await ref.putFile(avatar).then(() => {

使用uid而不是新的Date,因为uid将保持不变,因此您将能够替换图像而不是添加新图像