使用thymleaf模板,自行导入依赖!
一、单文件上传
1、编写单文件上传页面singleFile.html
<!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>单文件上传</title> </head> <body> <form method="post" enctype="multipart/form-data" action="/singleUpload"> <p>选择文件:<input type="file" name="file"/></p> <p><input type="submit" th:value="上传"/></p> </form> </body> </html>
2、编写FileUploadController.java
package com.rick.apps.controller; import com.rick.common.ResultJson; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; /** * Desc : 文件上传 * User : RICK * Time : 2017/8/23 9:36 */ @Controller public class FileUploadController { /** * Desc : 跳转单文件上传页面 * User : RICK * Time : 2017/8/23 9:37 */ @RequestMapping("/singleFile") public String singleFile(){ System.out.println("-------------------"); return"/singleFile"; } /** * Desc : 单文件上传 * 注意:不指定上传目录,默认是上传到项目的根目录 * User : RICK * Time : 2017/8/23 9:40 */ @ResponseBody @PostMapping("/singleUpload") public ResultJson singleUpload(@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(Exception e){ e.printStackTrace(); return ResultJson.buildFailInstance("上传失败"); } } else { return ResultJson.buildFailInstance("上传失败,文件为空!"); } return ResultJson.buildSuccessInstance(); } }
3、编写文件上传的设置
package com.rick; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.servlet.MultipartConfigFactory; import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.context.annotation.Bean; import javax.servlet.MultipartConfigElement; @SpringBootApplication @EnableConfigurationProperties @ServletComponentScan public class SpringbootEdu01Application { public static void main(String[] args) { SpringApplication.run(SpringbootEdu01Application.class, args); } /** * Desc : 设置文件上传的基本配置 * User : RICK * Time : 2017/8/23 10:11 */ @Bean public MultipartConfigElement multipartConfigElement(){ MultipartConfigFactory factory = new MultipartConfigFactory(); //设置文件大小限制 ,超了,页面会抛出异常信息,这时候就需要进行异常信息的处理了; factory.setMaxFileSize("1MB");//KB,MB //设置总上传数据总大小 factory.setMaxRequestSize("10MB");////KB,MB //设置文件存放位置 // factory.setLocation("d:\files"); return factory.createMultipartConfig(); } }
4、启动项目测试
访问http://localhost:8080/singleFile出现文件上传页面
选择要上传的文件,点击上传
上传成功,到项目根目录下查看文件是否存在
项目清单:
二、多文件上传
1、编写多文件上传页面multFile.html
<!DOCTYPE html> <html lang="en"> <head> <title>多文件上传</title> </head> <body> <form method="post" enctype="multipart/form-data" action="/multUpload"> <p>文件1:<input type="file" name="file" /></p> <p>文件2:<input type="file" name="file" /></p> <p>文件3:<input type="file" name="file" /></p> <p><input type="submit" value="上传" /></p> </form> </body> </html>
2、编写多文件上传后台代码FileUploadController.java
package com.rick.apps.controller; import com.rick.common.ResultJson; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import javax.servlet.http.HttpServletRequest; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.util.List; /** * Desc : 文件上传 * User : RICK * Time : 2017/8/23 9:36 */ @Controller public class FileUploadController { /** * Desc : 跳转单文件上传页面 * User : RICK * Time : 2017/8/23 9:37 */ @RequestMapping("/singleFile") public String singleFile(){ return"/singleFile"; } /** * Desc : 单文件上传 * 注意:不指定上传目录,默认是上传到项目的根目录 * User : RICK * Time : 2017/8/23 9:40 */ @ResponseBody @PostMapping("/singleUpload") public ResultJson singleUpload(@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(Exception e){ e.printStackTrace(); return ResultJson.buildFailInstance("上传失败"); } } else { return ResultJson.buildFailInstance("上传失败,文件为空!"); } return ResultJson.buildSuccessInstance(); } /** * Desc : 跳转多文件上传页面 * User : RICK * Time : 2017/8/23 9:37 */ @RequestMapping("/multFile") public String multFile(){ return"/multFile"; } /** * Desc : 多文件上传 * 主要是使用了MultipartHttpServletRequest和MultipartFile * User : RICK * Time : 2017/8/23 10:17 */ @ResponseBody @PostMapping("/multUpload") public ResultJson multUpload(HttpServletRequest request){ try { 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()){ byte[] bytes = file.getBytes(); stream = new BufferedOutputStream(new FileOutputStream(new File(file.getOriginalFilename()))); stream.write(bytes); stream.flush(); stream.close(); } } } catch(Exception e){ e.printStackTrace(); return ResultJson.buildFailInstance("上传失败"); } return ResultJson.buildSuccessInstance(); } }
3、启动项目测试,http://localhost:8080/multFile
选择文件
点击上传
到项目根目录下查看文件是否上传成功
项目清单: