无法从Firebase存储获取文件的Downlaod Url

时间:2018-10-21 06:55:27

标签: android firebase firebase-storage

im正在基于pdf生成的Android项目上工作并存储在firebase存储器中,并获得了Download url以下载文件,我的文件在pdf生成时会自动选择并上传,但无法获取在Firebase存储设备上上传的文件的下载URL。我对firebase有点陌生,所以这是下面的代码

    String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/PDF";
    File file = new File(path, "report.pdf");
    Uri filepicked = Uri.fromFile(file);
    StorageReference fileReference = mStorageRef.child(cusname +" "+"report" + "." +".pdf");
    fileReference.putFile(filepicked);
    StorageReference storageReference = fileReference.child(cusname+" "+"report");
    storageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
        @Override
        public void onSuccess(Uri uri) {
            String link = uri.toString();
            DatabaseReference reference = mDatabaseRef.child(cusname+" "+
                    "report");
            reference.setValue(link);
        }
    });

当我在上传过程中运行应用程序时,它会上传文件,但不要给我下载网址并显示此错误

//StorageException: StorageException has occurred.
    Object does not exist at location.
     Code: -13010 HttpResult: 404
E/StorageException: {  "error": {    "code": 404,    "message": "Not Found.  Could not get object"  }}
    java.io.IOException: {  "error": {    "code": 404,    "message": "Not Found.  Could not get object"  }}//

1 个答案:

答案 0 :(得分:0)

您在这里遇到两个问题。首先,putFile是异步的,需要一些时间才能完成,但是您的代码不会等待上传完成。它试图在上传开始后但上传完成之前立即访问下载。

此外,您正在构建另一个存储引用对象以获取下载URL。第一个附加了.pdf,但另一个没有。为什么不使用与上传文件相同的引用?