Прежде всего, нам нужно знать, что такое Spring Boot. Позвольте мне кратко поговорить об этом здесь. Spring Boot можно рассматривать как структуру в рамках ---> интегрирует различные структуры, такие как безопасность, JPA, данные, облако и т. Д., Именно ей не нужно заботиться о конфигурации и может быстро запустить разработку. Если вы заинтересованы, вы можете понять принцип реализации автоматической конфигурации. По сути, это условная реализация конфигурации Spring 4.0. Если вы оставите ставки глубоко, вы увидите это.
Принцип загрузки файла Spring Boot на самом деле является Spring MVC, потому что эта часть работы выполняется Spring MVC, а не Spring Boot. Итак, как SpringMVC обрабатывает процесс загрузки файла?
картина:
Во -первых, проект запускает соответствующую конфигурацию, а затем выполняет второй шаг выше, DispatcherServlet будет искать фасоль с идентификатором Multipartrestrover. В конфигурации компонент указывает на CommonsmultipartResolve, который реализует многократный интерфейс.
Четвертый шаг здесь определит, является ли файл Multipart методом Ismultipart. Вернуть True: будет вызван многократный метод. Передача HttpservletRequest вернет многопользовательский объект, а затем будет обработана диспетчерервлет на уровень контроллера. Верните False: это будет проигнорировано и продолжит передавать httpservletrequest.
В MVC вам необходимо настроить его в файле конфигурации webpplicationcontext.xml следующим образом:
<bean id = "multiartresolver"> <name = "defaultEncoding" value = "utf-8"/> <name = "maxUploadSize" value = "100000000"/> <name = "uploadtempdir" value = "fileUpload/temp"/> </> </bean>
Spring Boot был автоматически настроен, просто используйте его напрямую, нет проблем с прохождением теста. Существует размер ограничения загрузки по умолчанию, но в реальной разработке мы все еще делаем некоторые конфигурации.
Следующим образом в приложении. Прозрачные:
#multipart config#файл поддержки по умолчанию woursload file spring.http.multipart.enabled = true#Файл-загрузка каталога spring.http.multipart.location =/tmp/xunwu/images/#Максимум поддерживаемого размера файла spring.http.multipart.max-file-size = 4MB#Максимум поддерживаемый запрос. spring.http.multipart.max-request-size = 20 мБ
Конечно, вы также можете написать классы конфигурации для их реализации, а конкретные не будут отображаться.
После прочтения вышесказанного вы должны иметь грубое понимание. Давайте поговорим об этом здесь. Spring обеспечивает анализатор Multipart: Multiprestesolver. Вышеуказанное Commonsmultipartresolver. Он реализован на основе загрузки файла третьей стороны общин. Это также что -то до Сервлета 3.0. После 3,0+ вы также не можете полагаться на сторонние библиотеки. Вы можете использовать STANDARDSVLETMULTIPARTRESOLVER, который также реализует многократный интерфейс. Мы можем взглянуть на его реализацию:
* Copyright 2002-2017 Первоначальный автор или авторы. Package org.springframework.web.multipart.support; import javax.servlet.http.httpservletrequest; import javax.servlet.http.part; импорт org.apache.commons.logging.logfactory; org.springframework.web.multipart.multipartexception; import org.springframework.web.multipart.multiparthttpservletrequest; import org.springframework.web.multipart.multipartresolver;/** * Стандартная реализация {@link Multipr 3.0 {@link javax.servlet.http.part} api. * Будьте добавлены в виде «многочисленного» боба в контекст для Spring DispatcherServlet, * без какой -либо дополнительной конфигурации на уровне бобов (см. Ниже). * * <p> <b> ПРИМЕЧАНИЕ: </b> для использования многочисленного анализа Servlet 3.0, * вам необходимо отметить пораженный сервис с помощью разделения «Multipart-Config» в * {@code web.xml} или с {@link javax.servlet.multipartConfement} * В программном плате. {@link javax.servlet.annotation.multipartconfig} аннотация * на вашем классе сервлета. Настройки конфигурации, такие как максимальные размеры или * местоположения хранилища, должны применяться на этом уровне регистрации сервлета; * Сервлет 3.0 не позволяет их устанавливать на многочисленном уровне. * * @author Juergen Hoeller * @since 3.1 * @see #setresolvalalyly * @see httpservletrequest #getparts () * @see org.springframework.web.multipart.commonsmonsmultipartresolver */public strandwordservaltepartres Resolvelazily = false; /** * Установите, лениво ли разрешить запрос Multipart Lazy во время доступа к файлу или параметрам. * <p> по умолчанию - «FALSE», немедленно разрешающий многочисленные элементы, бросая * соответствующие исключения во время вызова {@Link #ResolVemultipart}. * Переключите это на «True» для ленивого многопоточного анализа, бросая исключения для анализа *, как только приложение попытается получить многочисленные файлы или параметры. */ public void setresolvazily (логический Resolvelazily) {this.resolvelazily = resolvalazily; } @Override public boolean ismultipart (httpservlectrequest) {// так же, как и в Commons fileUpload ... if (! ". } String contentType = request.getContentType (); return (contentType! = null && contentType.tolowerCase (). startSwith ("multipart/")); } @Override public multiparThttpserVletRequest resolVemultipart (httpservletRequest) Throws MultipArtException {return new StandardMultiparThttpServletRequest (запрос, this.Resolvelazily); } @OverRide public void cleanupMultipart (MultiparThttplServletRequest запрос) {// быть на безопасной стороне: явно удалите части, // только фактические части файлов (для совместимости смолы) попробуйте {for (часть: request.getParts ()) {if (request.getFile (part.getName ()! }}} catch (throwable ex) {logfactory.getLog (getClass ()). Warn («Не удалось выполнить очистку многочисленных элементов», Ex); }}}Вот последний класс конфигурации реализации теста, который я написал ранее. Вы можете кратко взглянуть на это, чтобы понять:
пакет com.bj.config; import org.springframework.boot.autoconfigure.condition.conditionalonmissingbean; import org.springframework.boot.autoconfigure.web.multipartproperties; импорт org.spramework.boot.properties.properties.properties.properties.properties.properties.ProperPerties. org.springframework.context.annotation.bean; импорт org.springframework.context.annotation.configuration; импорт org.springframework.web.multipart.multipartresolver; импорт org.springframework.web.multipart.support.standarderservaltr org.springframework.web.servlet.dispatcherservlet; import javax.servlet.multipartConfigelement;@configuration@enableconfigurationProperties (MultipartProperties.class) Public Class fileUploadConfig {recative multiproperties multiproperties; publicuploadConfig (MultipartProperties MultipartProperties) {this.multipartProperties = multipartProperties; } / *** Зарегистрировать Parser* @return* / @bean (name = dispatcherservlet.multipart_resolver_bean_name) @conditionalonmissingbean (multipartresolver.class) public starthardservletmultipartresolver multipartresolver () {Standardservlectmultipr STANDARDSVLETMULTIPARTRESOLVER (); Multipartresolver.setResolvalaily (MultipartProperties.isresolvelazily ()); вернуть многократный } / *** Загрузить конфигурацию* @return* / @bean @conditionalonmissingbean public multiploartConfigelement MultipRoartConfigelement () {return this.multipartProperties.createMultiPartConfig (); }}Суммировать
Выше приведено принцип загрузки файла Spring Boot, представленной редактором. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!