【问题标题】:Downloading Image from Firebase Storage in Android在 Android 中从 Firebase 存储下载图像
【发布时间】:2018-09-03 14:27:50
【问题描述】:

所以我尝试从 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);
}
});

【问题讨论】:

    标签: android firebase firebase-storage


    【解决方案1】:

    我发现您没有将 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");
    

    【讨论】:

    • 您可以将您的代码包含在我的代码中吗?我真的不知道我必须把这段代码sn-p放在哪里。谢谢
    • 知道卡尔。你去:)
    猜你喜欢
    • 2017-10-01
    • 2016-12-28
    • 1970-01-01
    • 2017-01-16
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多