【问题标题】:DownloadUrl for firebase storage not working [duplicate]Firebase存储的DownloadUrl不起作用[重复]
【发布时间】:2019-08-08 19:10:16
【问题描述】:

我尝试查找很多 stackoverflow 问题, 和许多其他地方,但找不到工作方法。

我正在将图片上传到 Firebase 存储,上传时我想要该图片/文档的下载链接。

taskSnapshot.getDownloadUrl() 现已弃用, 所以他们提到在 Firebase Storage Reference 上使用 getDownloadUrl,或在 taskSnapshot 上使用 getResult,但两者都返回一些行话,我无法获得正确的下载 url。

btnUploadImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!ImageUri.toString().trim().equals(""))
                {

                    final StorageReference imageRef = mFirebaseStorage.child("some.jpg");
                    imageRef.putFile(ImageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
                            Toast.makeText(MainActivity.this, "Done", Toast.LENGTH_SHORT).show();
                            Log.d("UploadSuccess", ""+task.getResult()+"\n"+mFirebaseStorage.getDownloadUrl());
                        }
                    });

                }else
                {
                    Toast.makeText(MainActivity.this, "Please Select An Image.", Toast.LENGTH_SHORT).show();
                }
            }
        });

这给了我一个日志输出:

D/上传成功: com.google.firebase.storage.UploadTask$TaskSnapshot@fff6f13 com.google.android.gms.tasks.zzu@c781349

以及我正在使用的 firebase/storage 版本:

implementation 'com.google.firebase:firebase-database:16.1.0'
implementation 'com.google.firebase:firebase-storage:16.1.0'

【问题讨论】:

  • 请检查副本以了解如何获取下载网址。

标签: android firebase url firebase-storage


【解决方案1】:

试试这个

val ref = mStorageReference?.child("some.jpg")
        val  uploadTask = ref?.putFile(Uri.fromFile(File(mImagePath)))

        uploadTask?.continueWithTask(Continuation<UploadTask.TaskSnapshot, Task<Uri>>
        { task ->
            if (!task.isSuccessful) {
                task.exception?.let {
                    throw it
                }
            }
            return@Continuation ref.downloadUrl
        })?.addOnCompleteListener { task ->
            if (task.isSuccessful) {
                val downloadUri = task.result
                mTempDatabaseReference?.child("image")?.setValue(downloadUri.toString())
            } else {
                // Handle failures
                // ...
            }
        }

【讨论】:

    猜你喜欢
    • 2018-09-22
    • 2016-11-02
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-01-25
    • 2018-03-02
    • 2019-04-25
    • 2018-05-26
    相关资源
    最近更新 更多