Загрузка файлов является одним из распространенных сценариев в Интернете. Наиболее типичной ситуацией является загрузка аватаров и т. Д. Сегодня я возьму вас на небольшой случай загрузки файлов в Spring Boot.
1. Конфигурация пакета POM
Мы используем последнюю версию Spring Boot 1.5.9, JDK использует 1.8, tomcat8.0.
<parent> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-parent </artifactid> <sersive> 1.5.9.Release </version> </parent> <properties> <java.version> 1.8 </java.version> </properties> <зависимости> <зависимости> </Java.version> </Properties> <зависимости> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId> org.springframework.boot </GroupId> <artifactId> Spring-boot-devtools </artifactid> <phineal> true </opportion> </depertive> </depertive>
Спринг-буте-стартер-тимелиф вводится в виде шаблона страницы и пишите несколько простых примеров загрузки.
2. Настройки класса запуска
@Springbootapplicationpublic class fileuploadwebapplication {public static void main (string [] args) throws exection {springapplication.run (fileuploadwebapplication.class, args); } // Tomcat Большой файл загрузка соединения сброс @bean public tomcatembeddedservletcontainerfactory tomcatembedded () {tomcatembeddedservletcontainerfactory tomcat = new tomcatembeddervletcontainerfactory (); tomcat.addconnectorcustomizers (((tomcatconnectorcustomizer) Connector -> {if ((connector.getprotocolholhandler () экземпляр AbstractTP11Protocol <?>)) {// -1 означает Unlimited ((AbstracTTP11Protocol <?>) connector.getProtocolHandler ()). SetMaxSwallowSize (-1); вернуть Tomcat; }}Код Tomcatembedded предназначен для решения проблемы сброса соединения при загрузке файлов более 10 м. Это содержимое исключения также не отражено Globalexception.
Подробная ссылка на контент: сброс подключения к загрузке Tomcat.
3. Напишите линейную страницу
Загрузить страницу
<! Doctype html> <html xmlns: th = "http://www.thymeleaf.org"> <body> <h1> Пример загрузки файла Spring Boot </h1> <form = "post" action = "/opload" ectype = "multive/form-data"> <input = "файл"/> "/> <brype =" multipry/form-data "> <input =" file "/"/> <brype = "multip/form-data" type = "отправить" value = "speect"/> </form> </body> </html>
Очень простой запрос на сообщение, поле выбора для выбора файла и кнопку отправки, эффект заключается в следующем:
Загрузить страницу отображения результатов:
<! Doctype html> <html lang = "en" xmlns: th = "http://www.thymeleaf.org"> <body> <h1> Spring Boot - Статус загрузки </h1> <div th: if = "$ {сообщение}"> <h2 th: th: th: th: th: th: th: th: th: hodm wods> </t code> </t -code>Рендеринги следующие:
4. Написать класс управления загрузкой.
Посетите LocalHost, чтобы автоматически прыгнуть на страницу загрузки:
@Getmapping ("/") public String index () {return "upload";}Загрузить обработку услуг
@Postmapping ("/upload") public String multeFileUpload (@RequestParam ("file") MultiplaartFile File, redirectattributes redirectattributes) {if (file.isempty ()) {redirectattributes.addflashattribute ("Сообщение", "Пожалуйста, выберите файл в upload"); вернуть "перенаправление: uploadstatus"; } try {// Получить файл и сохранить его где -нибудь byte [] bytes = file.getbytes (); Path Path = paths.get (uploaded_folder + file.getoriginalfilename ()); Files.write (path, байты); redirectattributes.addflashattribute ("Сообщение", "Вы успешно загрузили ' + file.getoriginalfilename () +"' "); } catch (ioException e) {e.printstackTrace (); } return "redirect:/uploadstatus";}Приведенный выше код означает, что информация о файле прочитана через MultipartFile, если файл пуст, перейдите на страницу результата и дайте подсказку; Если поток файла не пуст и записан в указанный каталог, результат будет отображаться на странице.
MultipartFile - это класс инкапсуляции для загруженных файлов Spring, который содержит такую информацию, как двоичные потоки и атрибуты файлов. Соответствующие атрибуты также могут быть настроены в файле конфигурации. Основная информация о конфигурации заключается в следующем:
spring.http.multipart.enabled = true #default поддерживаемый файл upload.spring.http.multipart.file-size-treshold = 0 #support файл. spring.http.multipart.max-request-size = 10mb # максимальный поддерживаемый размер запроса
Наиболее часто используются последние два конфигурационных содержимого, которое ограничивает размер загрузки файла. Если файл превышает размер, при загрузке будет брошено исключение:
Для получения дополнительной информации о конфигурации, пожалуйста, см.
5. Обработка исключений
@Controlleradvicepublic class globalexceptionHandler {@ExceptionHandler (multipArtexception.class) открытый строковый granderror1 (multiplexception e, redirectattributes redirectattributes) {redirectattributes.addflashattribute («Сообщение», e.getCause (). GetMessage ()); вернуть "redirect:/uploadstatus"; }}Установите @controllerAdvice, чтобы отслеживать, ограничен ли размер файла, загруженный Multipart. Когда это исключение происходит, на линейной странице представлена подсказка. Вы можете сделать много вещей с @ControlLerAdvice, например, глобальная обработка Unified Exception и т. Д. Заинтересованные студенты могут спуститься, чтобы узнать об этом.
6. Резюме
Эта простая демонстрация загрузки файлов с использованием Spring Boot завершена. Заинтересованные студенты могут скачать пример кода и попробовать его.
См.
Пример кода - GitHub
Образец кодового облака кода
Суммировать
Выше приведено то, что редактор представил вам с помощью функции загрузки файла Spring Boot. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!