Как использовать getdownloadurl в последних версиях? - PullRequest
0 голосов
/ 27 июня 2018
                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. Я уже сохранил изображение в хранилище базы данных. Это фрагмент, который ограничивает использование getdownloadurl? Мой мотив - сделать запрос для хранения в firebase.Пожалуйста, помогите мне.

Ответы [ 3 ]

0 голосов
/ 24 июля 2018
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
                                }
                            });

                   }   
0 голосов
/ 28 июля 2018

Это сработало для меня после нескольких часов исследований и разными способами:

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);
0 голосов
/ 27 июня 2018

Метод taskSnapshot.getDownloadUrl() был удален в последних версиях Firebase Storage SDK. Вместо этого вам нужно будет получить URL для загрузки с StorageReference сейчас.

Вызов 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
    }
});

В качестве альтернативы, первая строка может быть такой в ​​вашем случае:

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

Также см .:

...