如何从Firebase存储获取下载URL?
如何从Firebase存储获取下载URL?
我想从Firebase的uploadTask.addOnProgressListener
方法中获取下载链接。如何使用以下代码获取下载链接?
UploadTask uploadTask = storageRef.putBytes(data); uploadTask.addOnProgressListener(new OnProgressListener() { @Override public void onProgress(UploadTask.TaskSnapshot taskSnapshot) { Log.d("aaaaasessin",""+taskSnapshot.getTask().getResult()); } });
我使用了taskSnapshot.getTask().getResult()
,但这不起作用。
Firebase Storage是一种云存储解决方案,用于存储和获取用户生成的内容,如图像、视频和音频文件。在使用Firebase Storage时,有时我们需要获取存储文件的下载URL。然而,Firebase Storage的最新版本中已经移除了一些方法,如StorageMetadata.getDownloadUrl()和UploadTask.TaskSnapshot.getDownloadUrl(),因此我们需要找到一种新的方法来获取下载URL。
解决这个问题的方法是使用addOnSuccessListener方法。在上传任务成功时,我们可以通过storageRef.getDownloadUrl()方法来获取下载URL。然而,需要注意的是,getDownloadUrl()方法是异步的,它返回一个Task对象。
以下是获取下载URL的示例代码:
uploadTask.addOnSuccessListener(new OnSuccessListener() { public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener () { public void onSuccess(Uri uri) { String url = uri.toString(); //使用url进行相关操作 } }); } });
需要注意的是,如果设备无法连接到Firebase Storage后端,成功或失败的监听器将不会被调用。成功或失败的监听器只有在数据被提交或被Firebase服务器拒绝后才会被调用。
有读者提出了一个问题,即在离线状态下上传任务,并且只能使用addOnProgressListener方法,无法使用addOnSuccessListener方法。然而,对于这种情况,我们无法直接获取下载URL,因为下载URL只能在任务成功完成后由服务器提供。因此,没有其他替代的方法来在离线状态下获取下载URL。
,要从Firebase Storage获取下载URL,我们需要在上传任务成功后使用addOnSuccessListener方法,并通过storageRef.getDownloadUrl()方法来获取下载URL。然而,在离线状态下,无法直接获取下载URL,只有在任务成功完成并得到服务器响应后才能获取到下载URL。