2016-10-06 7 views
1

У меня есть файл PDF и некоторые файлы doc, хранящиеся в хранилище firebase.Как загрузить файл из хранилища Firebase в External_Storage из Android

Как загрузить файл из хранилища Firebase на внешнюю память моего устройства?

public void writeExternalStorage() { 

     String filename; 
     String completepath; 


     mref = FirebaseStorage.getInstance().getReference(); 
     StorageReference filepath = mref.child("MyFiles").child("firstFile.pdf"); 
     InputStream inputStream = null; 
     File file = null; 
     FileOutputStream fileOutputStream = null; 
     String state = Environment.getExternalStorageState(); 
     if (Environment.MEDIA_MOUNTED.equals(state)) { 
      try { 
       file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS).getAbsolutePath() + "/TestPurpose"); 
       // Log.d("PATH", file.toString()); 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 


     } 


    } 

Я хочу, чтобы загрузить файл Firstfile.pdf к External_storage в документе/TestPurpose/папки. Как это можно сделать?

+0

Какую часть загрузки или сохранения файла вы не понимаете? –

+0

Помечается как слишком широкий - вы хотите взглянуть на https://developer.android.com/training/basics/data-storage/files.html и попробовать эти вещи. После того, как вы включите их, вы сможете использовать URI файла, который указывает на внешнее хранилище, и все должно быть просто Work ™ –

ответ

5
private void downloadFile() { 
    FirebaseStorage storage = FirebaseStorage.getInstance(); 
    StorageReference storageRef = storage.getReferenceFromUrl("<your_bucket>"); 
    StorageReference islandRef = storageRef.child("file.txt"); 

    File rootPath = new File(Environment.getExternalStorageDirectory(), "file_name"); 
    if(!rootPath.exists()) { 
     rootPath.mkdirs(); 
    } 

    final File localFile = new File(rootPath,"imageName.txt"); 

    islandRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() { 
     @Override 
     public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) { 
      Log.e("firebase ",";local tem file created created " +localFile.toString()); 
      // updateDb(timestamp,localFile.toString(),position); 
     } 
    }).addOnFailureListener(new OnFailureListener() { 
     @Override 
     public void onFailure(@NonNull Exception exception) { 
      Log.e("firebase ",";local tem file not created created " +exception.toString()); 
     } 
    }); 
} 
+0

Это действительно помогло! но что, если я хочу изменить имя каждого изображения, которое я загружаю в Firebase? Могу ли я добавить что-нибудь в эту строку, чтобы он продолжал меняться для каждого файла? 'Файл localFile = новый файл (rootPath," imageName.txt ");' – Chip

Смежные вопросы