代码之家  ›  专栏  ›  技术社区  ›  Sheikh Hasib

在Android FireBase存储中上传文件后,如何获取文件下载URL?GetDownloadURL()不工作

  •  12
  • Sheikh Hasib  · 技术社区  · 8 年前

    在我的新Android FireBase项目中,我使用 com.google.firebase:firebase-storage:16.0.1 图书馆。

    我得到以下错误:

    enter image description here

    我打开了另一个有图书馆的项目 firebase-storage:15.0.2 和 taskSnapshot.getDownloadUrl(); 在那个项目上工作的。但是在使用了最新的依赖库之后,它就不工作了。

    现在,如何获取文件URL?

    有没有办法获得文件下载链接?

    4 回复  |  直到 7 年前
        1
  •  30
  •   Sheikh Hasib    8 年前

    我找到了2个解决问题的方法。

    Firebase Google Documentation :

    //add file on Firebase and got Download Link
    filePath.putFile(imageUri).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();
            }
            return filePath.getDownloadUrl();
        }
    }).addOnCompleteListener(new OnCompleteListener<Uri>() {
        @Override
        public void onComplete(@NonNull Task<Uri> task) {
            if (task.isSuccessful()){
                Uri downUri = task.getResult();
                Log.d(TAG, "onComplete: Url: "+ downUri.toString());
            }
        }
    });
    

    另一个解决方案!

    它比Google FireBase文档更简单、更小,我将使用它:

    filePath.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {
                    Log.d(TAG, "onSuccess: uri= "+ uri.toString());
                }
            });
        }
    });
    
        2
  •  6
  •   All Іѕ Vаиітy goblin    7 年前

    该方法在版本16.0.1中已被弃用(请检查 Firebase release notes )所以你必须使用

    StorageReference.getDownloadUrl()

    如果您想在上传文件后得到它们,那么您必须检查它们的文档 here . 它已经更新。

        3
  •  1
  •   Atif AbbAsi    7 年前

    这就是我在Kotlin Android中获得下载链接的方式。

     ref.putFile(filePath!!)
                .addOnSuccessListener {
                val result = it.metadata!!.reference!!.downloadUrl;
                result.addOnSuccessListener {
    
                   val imageLink = it.toString()
    
    
                }
            }
    
        4
  •  0
  •   ali sampson    7 年前

    不推荐使用taskSnapshot.getDownloadURL(),因此我建议在addOnSuccessListener()方法中,使用storageReference并调用getDownloadURL()方法以获取文件的URL,您可以对其执行任何操作。希望有帮助。

             mUploadTask = storageRef.putFile(file).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
    
                    // get the image Url of the file uploaded
                    storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                        @Override
                        public void onSuccess(Uri uri) {
                            // getting image uri and converting into string
                            Uri downloadUrl = uri;
                           fileUrl = downloadUrl.toString();
    
    
                        }
                    });
    
                }
            });