一、准备工作
1.添加依赖:
<!-- 文件上传--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency>
2.配置springmvc.xml文件:
<!--配置文件上传解析器--> <bean id="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"> </bean>
3.配置web.xml:
<!-- 配置springmvc的中央控制器 --> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <!-- 配置文件上传相关信息 --> <multipart-config> <max-file-size>10485760</max-file-size> <max-request-size>10485760</max-request-size> <file-size-threshold>0</file-size-threshold> </multipart-config> </servlet>
二、单文件上传
1.html:
<form action="files/upload" enctype="multipart/form-data" method="post"> <h1>单文件上传</h1> 昵称:<input type="text" name="nickName" /> 头像:<input type="file" name="picture"/> <input type="submit" value="提交"> </form>
2.java:
@Controller @RequestMapping("/files") public class FileuploadController { //单文件上传 @PostMapping("/upload") public String h01(@RequestParam("nickName") String nickName, @RequestParam("picture")MultipartFile picture) throws IOException { /* System.out.println("nickName = " + nickName); //获取文件名 System.out.println("文件名:"+picture.getOriginalFilename()); System.out.println("文件大小:"+picture.getSize());*/ //1.配置文件上传保存路径 String filepath = "D:/upload/"; File file = new File(filepath); //2.如果文件夹不存在就创建文件 if(!file.exists() || !file.isDirectory()){ file.mkdirs(); } //3.获取文件信息 //文件原始名称:name.jpg String originalFilename = picture.getOriginalFilename(); //获取文件后缀 int i = originalFilename.lastIndexOf("."); //.jgp String substring = originalFilename.substring(i); String uuid = UUID.randomUUID().toString();//生成唯一字符串防止重名 //保存文件 D:/upload/jgkuieow9090.jpg File newFile = new File(filepath+uuid+substring); picture.transferTo(newFile); return "succ"; }}
三、多文件上传
1.html:
<form action="files/uploads" enctype="multipart/form-data" method="post"> <h1>多文件上传</h1> 昵称:<input type="text" name="nickName" /> 文件1:<input type="file" name="picture"/> 文件2:<input type="file" name="picture"/> 文件3:<input type="file" name="picture"/> <input type="submit" value="提交"> </form>
2.java:
//多文件上传 @PostMapping("/uploads") public String h02(@RequestParam("picture") List<MultipartFile> files) throws IOException { //1.配置文件上传保存路径 String filepath = "D:/upload/"; File file = new File(filepath); //2.如果文件夹不存在就创建文件 if(!file.exists() || !file.isDirectory()){ file.mkdirs(); } //3.获取文件信息 if(files.isEmpty()) return "文件为空"; for(MultipartFile picture:files){ //文件原始名称:name.jpg String originalFilename = picture.getOriginalFilename(); //获取文件后缀 int i = originalFilename.lastIndexOf("."); //.jgp String substring = originalFilename.substring(i); String uuid = UUID.randomUUID().toString();//生成唯一字符串防止重名 //保存文件 D:/upload/jgkuieow9090.jpg File newFile = new File(filepath+uuid+substring); picture.transferTo(newFile); } return "succ"; }