从 Android 中的 Firebase Storage 下载图片



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

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

最新更新