После загрузки файла в Android Firebase Storage, как получить файл загрузки Url?getDownloadUrl () не работает - PullRequest
0 голосов
/ 28 мая 2018

В моем новом проекте Android Firebase я использовал библиотеку com.google.firebase:firebase-storage:16.0.1.

Я получаю следующую ошибку:

enter image description here

Я открыл другой проект, в котором были библиотеки firebase-storage:15.0.2 и taskSnapshot.getDownloadUrl();, которые работали над этим проектом.но после использования последней библиотеки зависимостей она не работает.

Теперь, как я могу получить URL файла?

Любой способ получить ссылку для скачивания файла?

Ответы [ 4 ]

0 голосов
/ 23 февраля 2019

вот так я получаю ссылку для скачивания в kotlin android.

 ref.putFile(filePath!!)
            .addOnSuccessListener {
            val result = it.metadata!!.reference!!.downloadUrl;
            result.addOnSuccessListener {

               val imageLink = it.toString()


            }
        }
0 голосов
/ 28 мая 2018

Я нашел 2 решения моей проблемы.

Firebase Документация Google :

//add file on Firebase and got Download Link
filePath.putFile(imageUri).continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
    @Override
    public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
        if (!task.isSuccessful()){
            throw task.getException();
        }
        return filePath.getDownloadUrl();
    }
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
        if (task.isSuccessful()){
            Uri downUri = task.getResult();
            Log.d(TAG, "onComplete: Url: "+ downUri.toString());
        }
    }
});

Другое решение!

Это проще и меньше, чем документация Google Firebase, и я буду ее использовать:

filePath.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
            @Override
            public void onSuccess(Uri uri) {
                Log.d(TAG, "onSuccess: uri= "+ uri.toString());
            }
        });
    }
});
0 голосов
/ 01 февраля 2019

taskSnapshot.getDownloadUrl () устарела, поэтому я рекомендую, чтобы в вашем методе addOnSuccessListener () вы использовали ваш storageReference и вызывали метод getDownloadUrl (), чтобы получить URL-адрес файла и делать с ним все, что захотите,Надеюсь, это поможет.

         mUploadTask = storageRef.putFile(file).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                // get the image Url of the file uploaded
                storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        // getting image uri and converting into string
                        Uri downloadUrl = uri;
                       fileUrl = downloadUrl.toString();


                    }
                });

            }
        });
0 голосов
/ 28 мая 2018

Этот метод устарел в версии 16.0.1 (отметьте Примечания к выпуску Firebase ), поэтому вам придется использовать

StorageReference.getDownloadUrl ()

Если вы хотите получить их после загрузки файла, то вы должны проверить их документацию здесь .Уже обновлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...