当前位置: 首页 > 知识库问答 >
问题:

在android studio java上从Firebase存储库下载图像到imageview

贡可人
2023-03-14

我试图用Java从Firebase存储下载一个图像到android studio应用程序的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();
        }
    });
}
}
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
        }
    });

共有1个答案

唐阳晖
2023-03-14
StorageReference storageReference = FirebaseStorage.getInstance().getReference("FolderName/photoName.format");

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

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

 类似资料:
  • 我试图在Firebase存储中使用Firebase上传图像,但文件不能完全上传。它只显示图像的大小9字节,下载时无法预览。 这是我使用的代码:- 我使用的反应本地图像作物选择器。我使用Firebase,但不是反应本机Firebase。请帮助!

  • 我有一个问题与我的代码,我必须上传图像到Firebase存储,我需要的图像来自画廊和相机,从画廊的图像是好的,但来自相机的图像给问题,图像加载在ImageView和被发送到数据库是黑色的。有人知道如何解决这个问题吗,或者你知道任何其他加载图像的方法吗? 来自画廊 从相机

  • 我有一个按钮,它向用户提供选择,他是否想要从画廊或相机的图像。当用户从图库拍摄图像时,我能够成功地将图像上传到Firebase存储,但是当用户选择相机时,我无法将图像上传到存储。这是用户选择相机时的onActivityResult代码 它将图像上传到我的imageview,但给我错误提示 当我尝试上载到存储时 我在stack overflow上遇到了一个类似的问题。 我认为公认的答案是错误的,因为

  • 当我的数据库用“photo_url”字段更新时,我想下载图像并将其保存到存储区

  • 我想在上传到Firebase存储之前调整图像的大小。 我的问题是:FireBase在其Uri上上传图像。我从图库意图中获取图像,并将其放在上,然后像这样调整其大小: firebase根据Uri像这样上传它(如果有其他上传文件的方法,它将非常有用!): 有没有办法获取