每次使用Flutter / Firebase按下上传时如何创建唯一的图像ID?

商业丸

我正在尝试制作一个图像上传按钮并将其链接到Firebase,以便每次按下该按钮时,图像都会发送到Firebase存储。以下是我的代码的相关片段:

  // Files, and references
  File _imageFile;
  StorageReference _reference =
      FirebaseStorage.instance.ref().child('myimage.jpg');

  Future uploadImage() async {
    // upload the image to firebase storage
    StorageUploadTask uploadTask = _reference.putFile(_imageFile);
    StorageTaskSnapshot taskSnapshot = await uploadTask.onComplete;

    // update the uploaded state to true after uploading the image to firebase
    setState(() {
      _uploaded = true;
    });
  }
  // if no image file exists, then a blank container shows - else, it will upload 
  //the image upon press
  _imageFile == null
                ? Container()
                : RaisedButton(
                    color: Colors.orange[800],
                    child: Text("Upload to Firebase Storage"),
                    onPressed: () {uploadImage();}),

但是,每次按此按钮时,图像都会用相同的名称覆盖现有的图像,我想知道是否有一种方法可以使每次按该按钮时,图像的名称都会更改,并且结果,原始图像不会被覆盖。我非常感谢我所获得的任何帮助,因为我是Flutter和Firebase的新手。

谢谢!

首席马龙

基本上,当您致电:

FirebaseStorage.instance.ref().child('myimage.jpg');

您每次都上传具有相同名称的文件:

myimage.jpg

为了解决您的问题,您只需要为图像生成一个随机密钥即可。您可以通过以下几种方法执行此操作:

如果您设置了Firestore(Firebase提供的数据库),则可以将图像名称推送到数据库,并让其返回DocumentID,Firestore会为您创建一个未使用的随机ID。

您还可以使用当前的日期/时间:

DateTime.now().toString()

要么

DateTime.now().toIso8601String();

或者,当然,您始终可以根据要上传的文件名编写自己的哈希函数,具体操作如下:

_imageFile.toString();

然后,一旦获得文件的随机名称,就应该像这样上传:

FirebaseStorage.instance.ref().child(myImageName).putFile(_imageFile);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Firebase中使用push()时,如何提取唯一ID

如何创建一个循环来在每次按下按钮时指定不同的动作?

jQuery-如何在每次按下按钮时创建一个新的可拖动div

使用用户电子邮件作为唯一ID时如何设置Firebase规则?

每次使用android studio按下按钮时,如何让1个按钮播放随机声音

如何在每次上传图像时为其赋予不同的 ID

如何每次创建一个唯一的字母数字 id 并确保它不存在于我使用 python 的现有列表中?

每次按下按钮时如何创建克里特岛新文件?

每次用户使用firebase登录时如何发送通知邮件?

如何从集合中的文档中找到最大数据投票,并在为每次使用 flutter 和 firestore 找到的胜利添加一个新集合之后?

创建一个函数,每次上传图像时打开一个新文件夹

每次运行java脚本代码时如何创建唯一值?

使用每次消费使用唯一值的流

每次应用加载时Flutter都会检查日期

每次按下Enter键时如何在Java中弹出一个新文本?

如何获得一个UI按钮,使其在每次按下时执行不同的任务?

在Firebase中使用push()时,如何获取唯一ID并将其存储在数据库中

由于每次刷新都会覆盖唯一ID,因此无法创建唯一ID

未定义的类“ StorageReference”。使用flutter在Firebase中上传图像时

while每次迭代时使用array + array

每次使用模板时都要编译模板

每次按下 UIButton 时如何制作新的 UILabel?

每次用户按下按钮时如何进行迭代?

每次按下JButton时,如何增加JTextField中的数字?

每次用户按下javascript键时如何触发事件

每次按下按钮时,如何使scrollView移动?

每次按下按钮时如何打开GIF

每次按下按钮时如何停止面板加载

使用$ _SESSION在每次刷新时(从上一次)数组中的唯一整数