Главная » Spring » Выгрузка файлов Spring

0

В разделе 8.2.4, выше, отмечалось, что в качестве аватара любо- го пользователя отображается изображение по умолчанию spitter_ avatar.png. Но настоящие пользователи приложения Spitter наверня- ка предпочли бы иметь изображения, подчеркивающие индивиду- альность. Чтобы дать им такую возможность, реализуем выгрузку аватара пользователя как часть процедуры регистрации.

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

# добавить в форму поле для выгрузки файла;

# добавить в метод addSpitterFromForm() контроллера SpitterCont- roller поддержку приема выгруженного файла;

# настроить в Spring механизм анализа форм, состоящих из не-

скольких частей.

Начнем с первого пункта списка и подготовим форму к приему выгружаемого файла.

Добавление в форму поля выгрузки файла

Большинство полей ввода в форме являются текстовыми и легко могут быть отправлены на сервер в виде множества пар имя/значе- ние. В действительности тип содержимого типичной формы опре- деляется как application/x-wwwform-urlencoded и имеет форму строки с парами имя/значение, разделенными символами амперсанда.

Но, я думаю, вы согласитесь, что файлы существенно отличаются от значений других полей формы. Обычно на сервер выгружаются двоичные файлы, что не укладывается в парадигму пар имя/значе- ние. Таким образом, чтобы дать пользователям возможность выгру- жать изображения, играющие роль аватара, необходимо представить данные формы в каком-то другом виде.

Что касается отправки форм с файлами, их тип определяется как multipart/form-data. То есть нам необходимо настроить тип содержи- мого формы multipart/form-data, определив атрибут enctype в элементе

<sf:form>, как показано ниже:

<sf:form  method="POST"

modelAttribute="spitter" enctype="multipart/form-data">

После установки атрибута enctype в значение multipart/form-data каждое поле будет отправляться как отдельная часть запроса POST, а не как пара имя/значение. Это делает возможным в одной из час- тей отправить содержимое файла изображения.

Теперь можно добавить в форму новое поле – стандартный HTML-тег <input> с атрибутом type, имеющим значение file:

<tr>

<th><label for="image">Profile image:</label></th>

<td><input  name="image"  type="file"/>

</tr>

Этот фрагмент HTML-разметки отобразит поле выбора файла в форме. В большинстве браузеров это поле отображается как текс- товое поле с кнопкой сбоку. На рис. 8.8 показано, как выглядит это поле при отображении формы в браузере Safari в Mac OS X.

Рис. 8.8. Поле выбора файла в форме регистрации приложения Spitter, позволяющее пользователю выбрать индивидуальный аватар

Теперь пользователи смогут выгружать файлы с изображения- ми своих аватаров. Такая форма будет отправляться на сервер как состоящая из нескольких частей, где одна из них будет содержать

двоичные данные из файла изображения. Следующий наш шаг – подготовить серверную часть приложения к приему этих данных.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии