android 如何在最近的版本中使用getdownloadurl?

wtzytmuj  于 2022-11-03  发布在  Android
关注(0)|答案(5)|浏览(311)
Uri downloaduri=taskSnapshot.getDownloadUrl();//here i cant use getdownloadurl() function
                DatabaseReference new_prod=db.push();
                new_prod.child("product name").setValue(prod_name);
                new_prod.child("product price").setValue(prod_price);
                new_prod.child("available stock").setValue(prod_quan);
                new_prod.child("product image").setValue(downloaduri);
                pd.dismiss();//fragments code

我无法使用getdownloadurl。我已经在firebase存储中存储了图像。是否是该片段限制了getdownloadurl的使用?我的目的是查询firebase中的存储。请帮助我。

mm5n2pyu

mm5n2pyu1#

Firebase Storage SDK的最新版本中删除了taskSnapshot.getDownloadUrl()方法。您现在需要从StorageReference获取下载URL。
调用StorageReference.getDownloadUrl()返回一个Task,因为它需要从服务器获取下载的URL,所以需要一个完成监听器来获取实际的URL。
从有关下载文件的文档中:

storageRef.child("users/me/profile.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
    @Override
    public void onSuccess(Uri uri) {
        // Got the download URL for 'users/me/profile.png' in uri
        System.out.println(uri.toString());
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle any errors
    }
});

或者,如果您在上传后立即获得下载URL(就像您的情况一样),则第一行可能是这样的:

taskSnapshot.getStorage().getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {

另请参阅:

sshcrbum

sshcrbum2#

经过几个小时的研究和不同的方式,这对我很有效:

filepath.putFile(resultUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
     @Override
     public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

           //here
           Task<Uri> urlTask = taskSnapshot.getStorage().getDownloadUrl();
           while (!urlTask.isSuccessful());
           Uri downloadUrl = urlTask.getResult();

           final String sdownload_url = String.valueOf(downloadUrl);
r6vfmomb

r6vfmomb3#

storageReference.child("YOUR_CHILD")
    .putFile("FILE")
    .addOnSuccessListener(new OnSuccessListener() {
       @Override
       public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
             taskSnapshot
               .getStorage()
               .getDownloadUrl()
               .addOnSuccessListener(new OnSuccessListener() {
                                @Override
                                public void onSuccess(Uri uri) {
                                    //Put your result here
                                }
                            });

                   }
mpbci0fu

mpbci0fu4#

下面的方法对我很有效。

_fbs_upload_success_listener = new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot _param1) {

                Task<Uri> urlTask = _param1.getStorage().getDownloadUrl();
                while (!urlTask.isSuccessful());
                Uri downloadUrl = urlTask.getResult();
                String _downloadUrl = downloadUrl.toString();
   };
jdzmm42g

jdzmm42g5#

这是Kotlin解决方案,在搜索了3个小时后为我工作

val uploadTask =
        FirebaseStorage.getInstance().reference.child("images").child(imageName).putBytes(data)

    uploadTask.addOnFailureListener {
        // Handle unsuccessful uploads
        Toast.makeText(baseContext, "Failed to upload", Toast.LENGTH_LONG).show()
    }.addOnSuccessListener {
        Toast.makeText(
            baseContext, "Image uploaded",
            Toast.LENGTH_LONG
        ).show()
        var downloadUrl: Uri? = null
        FirebaseStorage.getInstance().reference.child("images")
            .child(imageName).downloadUrl.addOnSuccessListener { it1 ->
            downloadUrl = it1 

        }

    }

downloadUrl是您的URL

相关问题