我们如何从firebase网址“下载媒体”

时间:2017-09-19 08:07:25

标签: java android firebase firebase-realtime-database firebase-storage

  • 我是Android新手,我不知道如何从中下载media firebase
  • uploadFile方法中,我正在FirebaseStorage上传媒体,并在获得成功回复后downloadUrl = taskSnapshot.getDownloadUrl()发送给FirebaseDatabase
  • 我也从[{1}}
  • 获得url但无法download媒体
url

Response after hit the url

   private void uploadFile(Uri uri) {
    StorageReference uploadStorageReference = mStorageReferenceMedia.child(uri.getLastPathSegment());
    final UploadTask uploadTask = uploadStorageReference.putFile(uri);
    showHorizontalProgressDialog("Uploading", "Please wait...");
    uploadTask
            .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    hideProgressDialog();
                    downloadUrl = taskSnapshot.getDownloadUrl();
                    Log.e("MainActivity"+"241>>>>", downloadUrl.toString());
                    Toast.makeText(ActivityChatView.this, "ulr>>"+downloadUrl, Toast.LENGTH_SHORT).show();
                    sendURL();

                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception exception) {
                    exception.printStackTrace();
                    // Handle unsuccessful uploads
                    hideProgressDialog();
                }
            })
            .addOnProgressListener(ActivityChatView.this, new OnProgressListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                    int progress = (int) (100 * (float) taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
                    Log.e("Progress>>", progress + "");
                    updateProgress(progress);
                }
            });
}

2 个答案:

答案 0 :(得分:0)

比AsyncTask和HttpURLConnection组合我建议使用DownloadManager 作为正确的方法,并且可以从文档

继续从中断的地方下载
  

下载管理器是一个处理长时间运行的系统服务   HTTP下载。客户端可以请求将URI下载到a   特定目标文件。下载管理器将执行   在后台下载,负责HTTP交互和   在故障或连接更改后重试下载   系统重启。

请参阅此example。 为了进一步帮助您进行调试,请考虑这个

1)请确保通过验证将URL实际上传到数据库中,并在下载过程中根据此情况给出适当的扩展名称。
2)物理打开文件位置以查看文件是否至少创建并使用正确的文件扩展名(如.mp3或.txt)。
3)你取决于从db获得的名称是否适用于扩展,

答案 1 :(得分:0)

您应该将 StorageReference 用于download file from Firebase Storage

从网址下载文件

// Create a storage reference from our app
StorageReference storageRef = storage.getReference();

// Create a reference to a file from a Google Cloud Storage URI
StorageReference gsReference = 
    storage.getReferenceFromUrl("gs://bucket/images/stars.jpg");

//Download file in Memory
StorageReference islandRef = storageRef.child("images/island.jpg");

final long ONE_MEGABYTE = 1024 * 1024;
islandRef.getBytes(ONE_MEGABYTE).addOnSuccessListener(new         
OnSuccessListener<byte[]>() {
    @Override
    public void onSuccess(byte[] bytes) {
        // Data for "images/island.jpg" is returns, use this as needed
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle any errors
    }
});

阅读this了解更多详情和其他下载文件的选项。

阅读this上传文件。