文章目录
五、文件上传
5.1 回顾文件上传
表单的entype类型必须改为multipart/form-data
,提交方式必须为post提交(因为post提交才有请求体)
引入依赖:
<dependencies>
<!--SpringMVC依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<!--Json转换-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
<!--Tomcat依赖-->
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-api</artifactId>
<version>8.5.41</version>
</dependency>
<!--文件上传依赖-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
5.2 SpringMVC处理文件上传
5.2.1 配置文件上传解析器
<!--
配置文件上传的解析器
bean名称必须为: multipartResolver
-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--文件上传时文件的最大大小(单位:字节)-->
<property name="maxUploadSize" value="102400000"></property>
<!--文件上传时,文件名称的编码-->
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
5.3.2 准备表单
- Demo01.jsp:
<form action="/demo03/demo01" enctype="multipart/form-data" method="post">
<input type="file" name="pic">
<input type="submit">
</form>
5.3.3 编写处理器
package com.dfbz.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.UUID;
/**
* @author lscl
* @version 1.0
* @intro:
*/
@Controller
@RequestMapping("/demo01")
public class Demo01Controller {
@RequestMapping("/demo01")
public void demo01(
// 当表单项名称和形参名不一样可以使用@RequestPart注解来指定名称
@RequestPart("pic") MultipartFile pic,
HttpServletResponse response) throws Exception {
// 表单项的名称
String name = pic.getName();
// 文件的名称
String fileName = pic.getOriginalFilename();
// 文件的大小
long size = pic.getSize();
// 请求的类型
String contentType = pic.getContentType();
// 将前端传递的文件写入到磁盘
pic.transferTo(new File("D:/000/" + fileName));
response.setContentType("text/html;charset=utf8");
response.getWriter().write("<hr/ >name: " + name);
response.getWriter().write("<hr/ >fileName: " + fileName);
response.getWriter().write("<hr/ >size: " + size);
response.getWriter().write("<hr/ >contentType: " + contentType);
}
}
5.3 多文件上传
5.3.1 准备表单
<form action="/demo01/demo02" enctype="multipart/form-data" method="post">
<input type="file" name="pics">
<input type="file" name="pics">
<input type="file" name="pics">
<input type="file" name="pics">
<input type="submit">
</form>
5.3.2 编写处理器
/**
* 多文件上传
*
* @param pics
* @throws Exception
*/
@RequestMapping("/demo02")
@ResponseBody
public String demo02(MultipartFile[] pics) throws Exception {
for (MultipartFile file : pics) {
file.transferTo(new File("D:/000/" + UUID.randomUUID() + "-" + file.getOriginalFilename()));
}
return "success";
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131646.html