【问题标题】:Can't get downloadurl from firebase [duplicate]无法从firebase获取下载网址[重复]
【发布时间】:2018-06-20 12:09:55
【问题描述】:

我正在尝试从 firebase 获取下载 url,但它给了我另一个链接,例如“com.google.android.gms.tasks.zzu@3689a168”,而不是之前它在 Firebase 升级之前提供给我的链接。在升级 firebase 之前不存在此问题,我正在尝试获取类似以下“https://firebasestorage.googleapis.com/v0/b/lbsny-1a3d9.appspot.com/o/pOa47ktSz7ZRFVeykiz63bsm1Hu2%2F1523658820692.jpg?alt=media&token=c2fe1008-bb4a-47f2-9da7-82a3298a55da”的链接

上传图片的代码

mStorageRef = FirebaseStorage.getInstance().getReference().child(current_uid).child(System.currentTimeMillis() + ".jpg" );
        mStorageRef.putFile(resultUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                Task<Uri> downloadUri=mStorageRef.getDownloadUrl();
                String imageUrl = mStorageRef.getDownloadUrl().toString();
                mDataRef = FirebaseDatabase.getInstance().getReference();

                Map map = new HashMap();
                map.put("imageUrl",imageUrl);
                map.put("price",TempImageName);
                map.put("caption",TempImageCaption);
                map.put("time", ServerValue.TIMESTAMP);

                ItemUploadInfo itemUploadInfo = new ItemUploadInfo(TempImageCaption,TempImageName,mStorageRef.getDownloadUrl().toString());

                String ImageUploadId = mDataRef.push().getKey();
                mDataRef.child("Items").child(current_uid).child(ImageUploadId).setValue(map);
            }
        });

【问题讨论】:

  • @PeterHaddad 你能写出可以解决方法的代码吗!

标签: android firebase firebase-storage


【解决方案1】:

根据docs,上传文件后,可以通过在StorageReference上调用getDownloadUrl()方法获取下载文件的URL:

 final StorageReference ref = storageRef.child("images/mountains.jpg");
uploadTask = ref.putFile(file);

Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
    if (!task.isSuccessful()) {
        throw task.getException();
    }

    // Continue with the task to get the download URL
    return ref.getDownloadUrl();
  }
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
    if (task.isSuccessful()) {
        Uri downloadUri = task.getResult();
    } else {
        // Handle failures
        // ...
    }
   }
 });

【讨论】:

  • 非常感谢!你救了我
猜你喜欢
  • 1970-01-01
  • 2018-11-20
  • 2021-09-09
  • 1970-01-01
  • 2019-04-17
  • 1970-01-01
相关资源
最近更新 更多