(1)新建maven Java projecthtml
新建一個名稱爲spring-boot-fileuploadmaven java項目java
(2)在pom.xml加入相應依賴;web
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>me.shijunjie</groupId> <artifactId>spring-boot-fileuploadmaven</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spring-boot-fileuploadmaven</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.4.RELEASE</version> </parent> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- thmleaf模板依賴. --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin </artifactId> </plugin> <!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin </artifactId> <dependencies> springloaded hotdeploy <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.4.RELEASE</version> </dependency> </dependencies> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>exec</classifier> </configuration> </execution> </executions> </plugin> --> <!-- java編譯插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> </project>
(3)新建一個表單頁面(這裏使用thymeleaf)spring
在src/main/resouces新建templates(若是看過博主以前的文章,應該知道,templates是spring boot存放模板文件的路徑),在templates下新建一個file.html:apache
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3"> <head> <title>Hello World!</title> </head> <body> <form method="POST" enctype="multipart/form-data" action="/upload"> <p> 文件:<input type="file" name="file" /> </p> <p> <input type="submit" value="上傳" /> </p> </form> </body> </html>
(4)編寫controller;app
package me.shijunjie.controller; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; @Controller public class FileUploadController { //訪問路徑爲:http://127.0.0.1:8080/file @RequestMapping("/file") public String file(){ return "/file"; } @RequestMapping("/mutifile") public String mutifile(){ return "/mutifile"; } @RequestMapping("/upload") @ResponseBody public String handleFileUpload(@RequestParam("file")MultipartFile file){ if(!file.isEmpty()){ try { BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(file.getOriginalFilename()))); out.write(file.getBytes()); out.flush(); out.close(); }catch(FileNotFoundException e) { e.printStackTrace(); return "上傳失敗,"+e.getMessage(); }catch (IOException e) { e.printStackTrace(); return "上傳失敗,"+e.getMessage(); } return "上傳成功"; }else{ return "上傳失敗,由於文件是空的."; } } /** * 多文件具體上傳時間,主要是使用了MultipartHttpServletRequest和MultipartFile * @param request * @return */ @RequestMapping(value="/batch/upload", method=RequestMethod.POST) public @ResponseBody String handleFileUpload(HttpServletRequest request){ List<MultipartFile> files =((MultipartHttpServletRequest)request).getFiles("file"); MultipartFile file = null; BufferedOutputStream stream = null; for (int i =0; i< files.size(); ++i) { file = files.get(i); if (!file.isEmpty()) { try { byte[] bytes = file.getBytes(); stream = new BufferedOutputStream(new FileOutputStream(new File(file.getOriginalFilename()))); stream.write(bytes); stream.close(); } catch (Exception e) { stream = null; return "You failed to upload " + i + " =>" + e.getMessage(); } } else { return "You failed to upload " + i + " becausethe file was empty."; } } return "upload successful"; } }
(6)對上傳的文件作一些限制;maven
package me.shijunjie.spring_boot_fileuploadmaven; import javax.servlet.MultipartConfigElement; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.embedded.MultipartConfigFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @ComponentScan(value="me.shijunjie") public class App { @Bean public MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); //// 設置文件大小限制 ,超了,頁面會拋出異常信息,這時候就須要進行異常信息的處理了; factory.setMaxFileSize("128KB"); //KB,MB /// 設置總上傳數據總大小 factory.setMaxRequestSize("256KB"); //Sets the directory location wherefiles will be stored. //factory.setLocation("路徑地址"); return factory.createMultipartConfig(); } public static void main( String[] args ) { SpringApplication.run(App.class, args); } }
多文件上傳差很少,能夠參照http://blog.csdn.net/linxingliang/article/details/52077816spring-boot