Как проверить, существует ли изображение в хранилище Firebase?

В общем, я хочу сохранить и получить изображение профиля для каждого пользователя в Firebase. Я пытаюсь получить изображение из Firebase с помощью FirebaseUI и Glide (как описано здесь).

Он отлично работает для того, чего я хочу достичь, но я хочу обработать случай, когда пользователь не загрузил свое собственное изображение профиля (когда в хранилище Firebase нет изображения). К сожалению, я не могу найти, как проверить, есть ли такой файл в хранилище Firebase. Есть ли у кого-нибудь идеи, как проверить, есть ли файл profile.jpg

(в хранилище Firebase) в следующем коде?

StorageReference storageRef =  storageReference.child("profile.jpg");

ImageView imageView = profilePicture;
// Load the image using Glide
Glide.with(context /* context */)
     .using(new FirebaseImageLoader())
     .load(storageRef)
     .into(imageView);

person cru3lgenius    schedule 19.03.2017    source источник
comment
Когда вы говорите обработать случай, когда пользователь не загрузил свое собственное изображение профиля, вы хотите вызвать определенный метод с бизнес-логикой или отобразить только значок заполнителя / ошибки в профиле ImageView?   -  person Gaëtan Maisse    schedule 19.03.2017
comment
Я хочу иметь изображение профиля по умолчанию для всех пользователей, которые не загружали свои собственные. Итак, под дескриптором я подразумеваю, что если в хранилище firebase нет изображения, я хотел бы показать изображение по умолчанию.   -  person cru3lgenius    schedule 20.03.2017


Ответы (1)


Чтобы показать изображение по умолчанию, если в firebase нет 'profile.jpg', в новой версии Glide v4 вы можете использовать RequestOptions, например:

RequestOptions options = new RequestOptions().error(R.drawable.default_avatar);
Glide.with(context /* context */)
         .using(new FirebaseImageLoader())
         .load(storageRef)
         .apply(options)
         .into(imageView);

Оригинальный ответ для Glide v3

Используйте метод ошибки:

Glide.with(context /* context */)
     .using(new FirebaseImageLoader())
     .load(storageRef)
     .error(R.drawable.default_avatar)
     .into(imageView);
person Nikita Shaposhnik    schedule 19.03.2017
comment
Если это помогло решить вашу проблему, примите и ответ. - person Nikita Shaposhnik; 20.03.2017
comment
У меня это не работает. Я также пробовал .error (AppCompatResources.getDrawable (R.drawable.some_other_vector)) и некоторые другие, все еще не работающие = [ - person Mike Yan; 22.01.2018
comment
@MikeYan для Glide v4 нужен другой код, я обновил ответ - person Nikita Shaposhnik; 22.01.2018