将图片从Firebase存储下载到android studio java上的imageview中



我正试图使用Java将Firebase存储中的图像下载到安卓工作室应用程序上的imageView中。我浏览stackoverflow已经超过6个小时了,所以我很可能读过任何";类似的";问题。我尝试过各种方法,但建议最多、似乎最简单的方法是使用滑翔。我无法让它工作,也找不到错误。我甚至放了一个常规的谷歌图片链接来尝试,但它仍然显示为空白。

我添加的依赖项

implementation'com.firebaseui:firebase-ui-storage:6.4.0'
implementation'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor'com.github.bumptech.glide:compiler:4.12.0'

我使用的代码

ImageView imageView = findViewById(R.id.resultImage);
Glide.with(this).load("string of image").into(imageView);

我也试过这个代码

StorageReference ref = storage.getReferenceFromUrl("urlforimage");
// ImageView in your Activity
ImageView imageView = findViewById(R.id.uploadedImage);
// Download directly from StorageReference using Glide
Glide.with(this /* context */)
.load(ref)
.into(imageView);

这个代码

public class Breed_Search_Page1Activity extends AppCompatActivity {
ImageView rImage;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_breed__search__page1);

rImage = findViewById(R.id.rImage);

FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();

DatabaseReference databaseReference = firebaseDatabase.getReference();

DatabaseReference getImage = databaseReference.child("image");

getImage.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String link = dataSnapshot.getValue(String.class);
Picasso.get().load(link).into(rImage);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
// we are showing that error message in toast
Toast.makeText(Breed_Search_Page1Activity.this, "Error Loading Image", Toast.LENGTH_SHORT).show();
}
});
}
}

更新-我已经使用了下面的代码,但想知道有没有一种方法可以只使用文件名从Firebase Storage中显示它?当我从笔记本电脑上传图像时,我想尽快在应用程序中显示,所以如果我能对其进行编码,使其具有我上传时要使用的文件名,则上传后将显示,而无需手动更改任何

ImageView image = (ImageView) findViewById(R.id.rImage);
String url = "https//...";
Glide.with(getApplicationContext()).load(url).into(image);

添加侦听器后的日志

2021-04-27 10:35:01.780 14347-14576/com.example.woofsapp E/StorageException: 
StorageException has occurred.
Object does not exist at location.
Code: -13010 HttpResult: 404
2021-04-27 10:35:01.781 14347-14576/com.example.woofsapp E/StorageException: 
{  "error": {    "code": 404,    "message": "Not Found.  Could not get 
object",    "status": "GET_OBJECT"  }}
java.io.IOException: {  "error": {    "code": 404,    "message": "Not 
Found.  Could not get object",    "status": "GET_OBJECT"  }}
at com.google.firebase.storage.network.NetworkRequest.parseResponse(NetworkRequest.java:434)
at com.google.firebase.storage.network.NetworkRequest.parseErrorResponse(NetworkRequest.java:451)
at com.google.firebase.storage.network.NetworkRequest.processResponseStream(NetworkRequest.java:442)
at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:272)
at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:286)
at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:70)
at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:62)
at com.google.firebase.storage.GetDownloadUrlTask.run(GetDownloadUrlTask.java:76)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)

给出logcat错误的代码-注意,我确实有直接从文档复制的MyAppGlideModule

ImageView image = findViewById(R.id.rImage);
StorageReference storageReference = 
FirebaseStorage.getInstance().getReference("Images/dogs.jpg");

storageReference.child("dogs.jpg").getDownloadUrl().addOnSuccessListener(new 
OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
// Got the download URL for 'users/me/profile.png'
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
});

在我的应用程序中,我有这样的东西:

StorageReference storageReference = FirebaseStorage.getInstance().getReference("FolderName/photoName.format");

我正在使用带有文件名的路径。

如需参考,请查看官方文档-在Android上使用云存储下载文件。

最新更新