Android

How to get the download url from Firebase Storage?

Как получить URL-адрес загрузки из хранилища Firebase?

Я хочу получить URL для загрузки из uploadTask.addOnProgressListener метода Firebase. Как я могу получить URL для загрузки, используя следующий код?

    UploadTask uploadTask = storageRef.putBytes(data);

uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>()
{
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot)
{
Log.d("aaaaasessin",""+taskSnapshot.getTask().getResult());
}
});

Я использовал taskSnapshot.getTask().getResult(), но это не работает.

Переведено автоматически
Ответ 1

Редактировать 22 августа 2019:

Недавно в класс StorageReference в Android SDK добавлен новый метод с именем list().

Чтобы решить эту проблему, вам нужно перебрать ListResult и вызвать getDownloadUrl(), чтобы получить URL-адреса загрузки каждого файла. Помните, что getDownloadUrl() метод асинхронный, поэтому он возвращает Task объект. Подробности смотрите Ниже. Я даже написал статью на эту тему под названием:


Чтобы получить URL-адрес загрузки, вам нужно использовать addOnSuccessListener, как в следующих строках кода:

uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
String url = uri.toString();

//Do what you need to do with url
}
});
}
});

Как указано в примечаниях к выпуску Firebase от 23 мая 2018 года,:


Облачное хранилище версии 16.0.1


Удалены устаревшие методы StorageMetadata.getDownloadUrl() и UploadTask.TaskSnapshot.getDownloadUrl(). Чтобы получить текущий URL-адрес загрузки, используйте StorageReference.getDownloadUr().


Итак, теперь при вызове getDownloadUrl() для объекта StorageReference он возвращает Task объект, а больше не объект Uri.

Пожалуйста, также помните, что ни прослушиватель успеха, ни прослушиватель сбоя (если вы собираетесь его использовать) не будут вызваны, если ваше устройство не может получить доступ к серверной части хранилища Firebase. Прослушиватели успешного / неудачного выполнения будут вызываться только после того, как данные будут переданы или отклонены серверами Firebase.

2023-07-14 21:12 java android firebase