1. Краткое описание
Данные в формате Multipart разбивают форму на несколько частей, каждая часть, соответствующая полю ввода. В поле ввода общей формы данные типа текста будут размещены в соответствующей части, но если файл загружен, его соответствующая часть может быть двоичной. Похоже на это:
2. Настройте многочисленное анализатор
Хотя многопотатические запросы могут показаться сложными, с ними легко справиться с ними в Spring MVC. Прежде чем записать метод контроллера для обработки загрузки файлов, мы должны настроить многоуточный анализатор, чтобы сообщить DispatcherServlet, как прочитать запрос Multipart.
Spring имеет две встроенные реализации Multipartresolver:
Конфигурация стандарта servletmultipartresolver:
1. Заявление Бин:
Конфигурация в ApplicationContext.xml
Кода -копия выглядит следующим образом: <bean id = "multipresolver" щетка: java; "> @bean (name =" multipresolver ") public startidservletmultipartresolver getstandardservletmultipartresolver () {return new Standardservletipartresolver ();};};};};
Советы: Имя анализаторов Multipart должно быть многоамериканским, в противном случае будет сообщена ошибка.
2. Настройте параметры загрузки:
* Конфигурация web.xml
<servlet> <servlet-name> DispatcherServlet </servlet-name> <vervlet-class> org.springframework.web.servlet.dispatcherservlet </servlet-class> <init-param> <param-name> contextconfiglocation </param-ame> <param-value> classpath: ApportiveContext.xml </param-ame> <param-par <load-on-startup> 1 </load-on-startup> <lipletart-config> <!-upload to/tmp/upload Directory-> <location>/tmp/upload </location> <!-Размер файла-2M-> <Максимальный размер> 2097152 </max-file-size> <!-Весь запрос не превышает 4m-> 4m-> 4m-> 4m-> 4m-> 4m <max-request-size> 4194304 </max-request-size> <!-Все файлы должны быть записаны на диск-> <File-size-Threshold> 0 </file-size-cholor </servlet-mapping>
* Конфигурация в классе конфигурации
Унаследован в классе конфигурации AbstractannotationConfigDispatcherServletinitializer
@Override Protected void CamentizereGistration (servletRegistration.dynamic Регистрация) {// загрузка в каталог /tmp /upload, размер файла составляет 2M, весь запрос не превышает 4M, и все файлы должны быть записаны на Disk. MultipartConfigelement ("e: // upload_ftp", 2097152,4194304,0)); }Commonsmultipartresolver Configuration:
1. Объявите бобы и настройте параметры загрузки
<bean id = "multiartresolver"> <!-Установите каталог загрузки/tmp/upload; Максимальная емкость файла установлена на 2 м; Максимальный размер памяти установлен на 0, что означает, что все файлы будут записаны на диск; Общая максимальная емкость запроса многоуровневого не может быть установлена-> <name = "uploadtempdir" value = "/tmp/upload"/> <name = "maxuploadSize" value = "2097152"/> <name = "maxinMemorySize" value = "0"/> </bean>
разница:
1. Commonsmultipartresolver По сравнению со стандартом Spartservletmultipartresolver, невозможно установить общую максимальную емкость многопорядных запросов.
2. Commonsmultipartresolver не заставляет устанавливать временный путь файла. По умолчанию этот путь является временным каталогом контейнера сервлета. STANDARDSVLETMULTIPARTRESOLVER должен установить временный путь файла для обычного выполнения. (Загруженные каталоги, упомянутые выше, являются временными путями файла)
3. SpringMVC обрабатывает запросы
1. Форма фронтальной формы
<form action = "/picture" method = "post" ectype = "multipart/form-data"> <input type = "file" name = "picture"> <input type = "Отправить"> </form>
Советы: Enctype = "Multipart/Form-Data" должны быть установлены, чтобы сообщить Springmvc, что это MultipartArt-запрос.
2. Бэкэнд MVC принимает запросы
@Requestmapping (value = "/picture", method = requestMethod.post) public String gethome (@RequestPart ("picture") Multiplefile Picture) бросает ioException {string name = picture.getName (); byte [] bytes = picture.getbytes (); picture.transferto (новый файл ("/"+picture.getoriginalfilename ())); // При сохранении в файловой системе здесь используйте относительный путь, например, конфигурация здесь /. На основе настроенного каталога загрузки. То есть путь к файлу e:/ upload_ftp/ является сохраненным каталогом возврата "дома"; }Советы: 1. @Requestpart ("Picture"): Когда регистрационная форма будет представлена, атрибут p Essence даст массив байт, которые содержит соответствующие данные детали в запросе (указанный через @Requestpart). Если пользователь представляет форму без выбора файла, массив будет пустым (а не нулевым). Таким образом, мы можем даже использовать массив Byte [] для получения Multipart -запросов вместо MultipartFile.
2. MultipartFile: Использование метода MultipartFile для приема предоставляет нам множество методов для выполнения следующей работы ...
3. Примите загруженные файлы в форме части
Что касается субъекта, то между интерфейсом детали и Multipartfile не существует большой разницы. Во многих случаях метод имени детали точно так же, как и название метода Multiplaartfile. Существуют некоторые сходства, но немного отличаются, например, getSubmittedFilename (), соответствующее getoriginalfilename (). Аналогичным образом, write () соответствует TransperTO (), и с помощью этого метода мы можем написать загруженный файл в файловую систему.
Стоит отметить, что если вы принимаете загрузку файлов через параметры части при написании методов контроллера, то нет необходимости настраивать многократный Только при использовании Multiplackfile нам нужен Multiprtresolver.
@Requestmapping (value = "/picture", method = requestmethod.post) public String gethome (@requestpart ("picture") Part picture) Throws ioException {picture.write ("/"+picture.getSubmittedFilename ()); вернуть "домой"; }Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.