2017-07-13 36 views
0

我有點困惑與火力地堡文檔文件的本地路徑:https://firebase.google.com/docs/storage/android/download-files如何獲得從火力地堡下載存儲

我想通過文件的URL下載從火力地堡一個文件,然後獲取其當地路徑:

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 ? 
    } 
}); 

問題出在評論中。

+0

你能告訴我爲什麼我的文件名更改,即從文件名到文件名-13557732.pdf一次下載....? – Camille

回答

2

從文檔: -

的的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是暫時的,但你可以在你指定的路徑創建文件了。這取決於你的用例。

+3

@Camille:這與您的理解之間的區別在於,Firebase會將數據下載到您指示的本地文件中。您告訴Firebase從Cloud Storage **下載哪個文件**以及**下載到哪裏。這與上傳文件非常相似:指示要上傳的文件(或其他數據流)*以及上傳文件的位置。請參閱此處的文檔:https://firebase.google.com/docs/storage/android/download-files#download_to_a_local_file –