Как назначить изображение по умолчанию для объекта Blob в инфраструктуре Play? - PullRequest
1 голос
/ 16 июня 2011

Я следил за этой хорошей статьей http://www.lunatech -research.com / playframework-файлов для загрузки-блоб

и отлично работающее решение для загрузки изображений

Мои вопросы: если пользователь не выбирает ни одного изображения, как мне назначить изображение по умолчанию во время сохранения (возможно, сохраненного на сервере)?

if (!user.photo) user.photo= ?; user.save();

Единственный взлом, о котором я могу подумать, это загрузить изображение по умолчанию и посмотреть, какой UID «Play» хранится в каталоге / tmp, и назначить его выше. Есть ли элегантное именованное * решение для этого?

  • когда я говорю named, я имею в виду, что я хочу, чтобы код выглядел так (что означает, что я знаю, что делаю, и я также могу написать элегантный автоматический код, если имеется более одного изображения)

user.photo= "images/default/male.jpg"

, а не (что означает, что я просто взламываю и не могу элегантно расширить список изображений)

user.photo= "c0109891-8c9f-4b8e-a533-62341e713a21"

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 17 июня 2011

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

Для этого, по вашему мнению, вы можете просто использовать метод exists() в поле Blob. Код будет выглядеть как

#{if user.photo.exists()}
  <img src="@{userPhoto(user.id)}">
#{/if}
#{else}
  <img src="@{'public/images/defaultUserImage.jpg'}">
#{/else}

В приведенном выше коде я предположил, что вы визуализируете изображение, используя действие userPhoto, как описано в статье Lunatech.

1 голос
/ 17 июня 2011

Я предполагаю, что вы можете сохранить изображение по умолчанию где-нибудь в исходной папке вашего приложения и использовать

user.photo.set(new FileInputStream(photo), MimeTypes.getContentType(photo.getName()));

для сохранения данных. Фотография - это просто объект File, поэтому вы можете получить ссылку на изображение по умолчанию и использовать его.

...