【问题标题】:How to upload multiple time a drawable image on firebase storage?如何在firebase存储上多次上传可绘制图像?
【发布时间】:2020-06-17 12:27:52
【问题描述】:

我想知道是否可以多次上传从 firebase 存储上的可绘制图像中获取的同一张图像,以使图像在存储上以不同的名称多次出现。我要做的是:

imageUri=Uri.parse("android.resource://com.example.project/"+R.drawable.error);
riversRef = storageRef.child("images/" + imageUri.getLastPathSegment()+ "_" + System.currentTimeMillis());
uploadTask = riversRef.putFile(imageUri);

但每次我在存储中使用它时都不会出现任何新图像,只是第一张。可能是因为在存储上具有相同的名称 (2131230900) 并且是相同的图像存储忽略它。我想要获得的结果是我从我的项目的可绘制对象中获取了两个相同的图像,但在存储中它们导致了 2 个不同的名称

【问题讨论】:

    标签: java android firebase firebase-storage


    【解决方案1】:

    您的 riversRef 是对 Cloud Storage 中特定位置/文件的引用。如果你在同一个引用上多次调用putFile,你会多次写入同一个位置,所以你最终只会得到一个文件

    要编写多个唯一文件,您需要为每个文件创建一个单独的唯一引用。比如:

    riversRef = storageRef.child("images/" + file.getLastPathSegment() + "_" + System.currentTimeMillis());
    

    通过在此处将时间戳添加到存储上的文件名,如果您多次调用它,我们最终会得到唯一的引用。或者,这样的事情也可以工作:

    for (int i=0; i < 10; i++) {
        riversRef = storageRef.child("images/" + file.getLastPathSegment() + "_" + i);
        uploadTask = riversRef.putFile(file);
    }
    

    所以现在我们只是为 Cloud Storage 中的每个文件名添加一个计数器。

    【讨论】:

    • 我试过了,但是当程序启动 uploadTask=riversRef.putFile(file) 我得到错误:找不到要上传的文件:android.resource://com.example.project/2131230900。在存储中不会出现带有新引用的新图像(通过添加时间戳完成)
    • 这意味着file 不存在,这意味着您的原始代码也可能不起作用。我故意没有更改您代码的那部分,因为从您发布的内容中不清楚file 的来源。
    • 对不起,你是对的,我把代码写得更清楚了。但是错误还是一样。
    • 我不明白你的意思。你是说不能上传单个文件?
    • 好的,我会尽量讲清楚。如果我不放 + " _ " + i 图片仅在第一次上传。其他时间相同的对象可能会从存储中被忽略,因此存储中只有一个(第一个)图像。如果我按照建议添加+“_”+ i,我根本无法上传任何图片。感谢您的耐心等待。
    猜你喜欢
    • 2021-04-14
    • 2017-03-27
    • 2018-07-04
    • 1970-01-01
    • 2020-08-28
    • 2021-02-20
    • 2017-09-25
    相关资源
    最近更新 更多