【问题标题】:How to get the local path from a file downloaded from Firebase Storage如何从从 Firebase 存储下载的文件中获取本地路径
【发布时间】:2017-12-18 12:58:01
【问题描述】:

我对 Firebase 文档有点困惑:https://firebase.google.com/docs/storage/android/download-files

我正在尝试通过文件的 URL 从 Firebase 下载文件,然后获取其本地路径:

mStorageReference.getFile(downloadURL).addOnSuccessListener(new 
    OnSuccessListener<FileDownloadTask.TaskSnapshot>() {

    @Override
    public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {

        // I assume the file is now downloaded from the given URL and is on the device
        // HOW DO I GET THE PATH TO THE FILE ON THE DEVICE ?
    }
});

问题在 cmets 中。

【问题讨论】:

  • 你能告诉我为什么我的文件名一旦下载就会改变,即从文件名变为文件名-13557732.pdf ....?

标签: android firebase firebase-storage


【解决方案1】:

来自文档:-

getFile() 方法将文件直接下载到本地设备。

因此,您可以先创建一个临时文件,而不是做您正在做的事情。 下面是一个例子:-

File localFile = File.createTempFile("images", "jpg");

之后,将此 localFile 作为参数传递给 getFile() 方法(而不是传递 downloadURL )。因此,当您的onSuccess() 被触发时,该文件将填充已下载的数据,您可以根据需要访问它。像这样的东西:-

mStorageReference.getFile(localFile).addOnSuccessListener(new 
OnSuccessListener<FileDownloadTask.TaskSnapshot>() {

@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
      //localFile contains your downloaded data

}
});

请注意,在此示例中,localFile 是临时的,但您也可以在指定路径创建文件。这取决于您的用例。

【讨论】:

  • @Camille:这与您的理解的区别在于 Firebase 将数据下载到您指定的本地文件中。您告诉 Firebase 要从 Cloud Storage 下载什么文件以及 将其下载到哪里。这与您上传文件时非常相似:您指明要上传的文件(或其他数据流)*和将其上传到哪里。请参阅此处的文档:firebase.google.com/docs/storage/android/…
猜你喜欢
  • 2020-10-24
  • 2020-12-09
  • 2019-11-07
  • 1970-01-01
  • 2017-03-29
  • 1970-01-01
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多