Как получить URL загрузки из загруженных файлов с помощью Firebase - PullRequest
0 голосов
/ 15 марта 2020

Читая документацию, я нашел раздел, рассказывающий о том, как загрузить файлы и получить его ссылку для скачивания. Код для получения ссылки на скачивание:

Kotlin

val ref = storageRef.child("images/mountains.jpg")
uploadTask = ref.putFile(file)

val urlTask = uploadTask.continueWithTask { task ->
    if (!task.isSuccessful) {
        task.exception?.let {
            throw it
        }
    }
    ref.downloadUrl
}.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        val downloadUri = task.result
    } else {
        // Handle failures
        // ...
    }
}

Java

final StorageReference ref = storageRef.child("images/mountains.jpg");
uploadTask = ref.putFile(file);

Task<Uri> urlTask = uploadTask.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();
        }

        // Continue with the task to get the download URL
        return ref.getDownloadUrl();
    }
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
    @Override
    public void onComplete(@NonNull Task<Uri> task) {
        if (task.isSuccessful()) {
            Uri downloadUri = task.getResult();
        } else {
            // Handle failures
            // ...
        }
    }
});

Но по какой строке я получаю URL загрузки? Это «return ref.getDownloadUrl ();» / «ref.downloadUrl»? Или "Uri downloadUri = task.getResult();" / "val downloadUri = task.result"?

1 Ответ

1 голос
/ 15 марта 2020

В обоих случаях переменная с именем downloadUri является окончательным URL для загрузки. Вы можете преобразовать ее в простую старую строку, если хотите, с помощью downloadUri.toString().

Это , а не , возвращаемое значение ref.getDownloadUrl(). Это очень распространенная ошибка. getDownloadUrl() является асинхронным и не возвращает URL немедленно. Вот почему вам нужен обратный вызов.

См. Также: Как получить URL из хранилища Firebase getDownloadURL

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