java - 无法从 Firebase 存储检索图像的下载 URL(出现异常)[需要紧急帮助]

标签 java android firebase firebase-storage

该代码成功将图像上传到 Firebase 存储,但没有返回下载网址。我该如何解决这个问题?

我收到此异常:java.lang.IllegalArgumentException:存储桶根不支持 getDownloadUrl()。为什么?

private void uploadFile() {
    if (mImageUri != null) {
        StorageReference fileReference = mStorageRef.child(System.currentTimeMillis()
                + "." + getFileExtension(mImageUri));

        fileReference.putFile(mImageUri).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 mStorageRef.getDownloadUrl();
            }
        }).addOnCompleteListener(new OnCompleteListener<Uri>() {
            @Override
            public void onComplete(@NonNull Task<Uri> task) {
                if (task.isSuccessful()) {
                    Uri downloadUri = task.getResult();
                        System.out.println("Upload success: " + downloadUri);
                } else {
                    // Handle failures
                    // ...
                }
            }
        });

    } else {
        Toast.makeText(this, "No file selected", Toast.LENGTH_SHORT).show();
    }

}

最佳答案

我认为返回下载网址有问题,请尝试以下代码:

private void uploadFile() {
    if (mImageUri != null) {
        StorageReference fileReference = mStorageRef.child(System.currentTimeMillis()
                + "." + getFileExtension(mImageUri));

        fileReference.putFile(mImageUri).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
                //change made here
                return fileReference.getDownloadUrl();
            }
        }).addOnCompleteListener(new OnCompleteListener<Uri>() {
            @Override
            public void onComplete(@NonNull Task<Uri> task) {
                if (task.isSuccessful()) {
                    Uri downloadUri = task.getResult();
                        System.out.println("Upload success: " + downloadUri);
                } else {
                    // Handle failures
                    // ...
                }
            }
        });

    } else {
        Toast.makeText(this, "No file selected", Toast.LENGTH_SHORT).show();
    }

}

关于java - 无法从 Firebase 存储检索图像的下载 URL(出现异常)[需要紧急帮助],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56933277/

相关文章:

java - 无法使用不可重复的请求实体重试请求

ios - Firebase Crashlytics 不会在仪表板/控制台 iOS 应用程序中显示更改

java - 如何在 FirebaseRecyclerAdapter 中设置 orderbychild?

java - 我想在背景图像上绘制可拖动的 JComponent

java - getBytes 的问题,如果最左边的位为 1,则下一位始终为 0

java - Android Searchview 导致 App 崩溃

java - android中的Timer和TimerTask——进一步理解

java - 针对更多类型的数据库运行 JUnit 测试

java - 更新扩展 Task 的类中的文本

javascript - 如何在启动 Angular 应用程序之前等待 Firebase 身份验证