Загрузка изображения из хранилища Firebase в Android - PullRequest
0 голосов
/ 02 сентября 2018

Поэтому я пытаюсь загрузить изображение из хранилища Firebase. Я попытался сделать это так, как Firebase рекомендует на их сайте. Далее я покажу вам свой код, но есть проблема. Когда я загружаю изображение, у меня есть OnSuccessListener. Я применил Log.d к нему, чтобы я знал, что он срабатывает. Но я не могу найти изображение, которое я пытался загрузить на свой смартфон.

Это мой код:

StorageReference storageReference = FirebaseStorage.getInstance().getReferenceFromUrl(photoURL);

final File imageFile = new File(Environment.getExternalStorageDirectory()
                         .getAbsolutePath() + "/MyFolder/");

storageReference.getFile(imageFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
     holder.progressBar.setVisibility(View.GONE);
     holder.downloadBtn.setVisibility(View.GONE);
 }
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
     holder.progressBar.setVisibility(View.GONE);
     holder.downloadBtn.setVisibility(View.VISIBLE);
}
}).addOnProgressListener(new OnProgressListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onProgress(FileDownloadTask.TaskSnapshot taskSnapshot) {
     int progress = (int) ((100 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount());
     holder.progressBar.setProgress(progress);
}
});

1 Ответ

0 голосов
/ 02 сентября 2018

Я вижу, вы не сохраняете I.T как файл изображения.

Попробуйте это

@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
     holder.progressBar.setVisibility(View.GONE);
     holder.downloadBtn.setVisibility(View.GONE);

    String filename = "yourfilename.png";
    File sd = Environment.getExternalStorageDirectory(); //You might wanna add something to sd that leads to your preferred path e.g /DCIM or /camera.
    File dest = new File(sd, filename);

    Bitmap bmp = BitmapFactory.decodeFile(imageFile.getAbsolutePath());
    try {
         FileOutputStream out = new FileOutputStream(dest);
         bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
         out.flush();
         out.close();
    } catch (Exception e) {
         e.printStackTrace();
    }
 }

Лучше заменить

final File imageFile = new File(Environment.getExternalStorageDirectory()
                     .getAbsolutePath() + "/MyFolder/");

с этим:

final File imageFile= File.createTempFile("images", "jpg");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...