首页 > 解决方案 > 有没有办法可以在不将旧图像删除到 Firebase 存储的情况下上传图像?

问题描述

我能够上传图像并给它一个name.jpg然后将它传递给对象名称以上传到firebase。问题是只有一张图片能够留在火力基地中。我希望能够存储多张图片。

我无法找到改变这一点的方法。下面的代码是访问图库的功能,或者您可以使其访问相机。我能够将图片发送到 Firebase 存储,但只存储一张图片,前一张被删除。我不想要那个。我希望能够存储图片而不删除以前的图片。


class _MyHomePageState extends State<MyHomePage> {
  File sampleImage;

  Future getImage() async {
    var tempImage = await ImagePicker.pickImage(source: ImageSource.gallery);

    setState(() {
      sampleImage = tempImage;
    });
  }




RaisedButton( 
            elevation: 7.0,
            child: Text('Upload'),
            textColor: Colors.white,
            color: Colors.blue,
            onPressed: () {
              final StorageReference firebaseStorageRef =     FirebaseStorage.instance.ref().child('myimage.jpg');
              final StorageUploadTask task = firebaseStorageRef.putFile(sampleImage);

            },
          )
        ],
      ),
    );
  }
}

标签: androidiosfirebaseflutter

解决方案


所以有几个选择。首先是的,每当您将同名文件上传到 Firebase 存储中的同一目录时,它都会替换存在的文件。真的有两种选择:

  1. 以某种方式更改文件名。一个非常简单的方法是将当前日期时间附加到图像上,即"myimage_" + Calendar.getInstance().getTime() + ".jpg". 您可能必须在此处导入日历实用程序。
  2. 将图像添加到唯一目录。在 Firebase 存储上,您可以像在本地计算机上一样创建目录。为此,在子方法参数中,您传递一个 URI 样式字符串imgName = images/uniqueidentifier/myimage.jpg,即将文件“myimage.jpg”保存到路径“images/uniqueidentifier”。

您可能希望将这些图像路径保存在某个地方,例如 Firestore,以便以后更容易与之交互。

https://firebase.google.com/docs/storage/android/upload-files进一步阅读。


推荐阅读