赞
踩
第一种方式
文件上传要求form表单的请求方式必须为post,并且添加属性enctype=“multipart/form-data”
<form action="${pageContext.request.contextPath}/goods/save" class="form" method="post" enctype="multipart/form-data">
SpringMVC中将上传的文件封装到MultipartFile对象中,通过此对象可以获取文件相关信息
上传步骤:
a>添加依赖:
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
b>在SpringMVC的配置文件中添加配置:
<!--必须通过文件解析器的解析才能将文件转换为MultipartFile对象-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"/>
<!--上传文件支持的最大大小 默认值为-1 不限制大小-->
<property name="maxUploadSize" value="-1"/>
</bean>
c>控制器方法:
@RequestMapping("/testUp") public String testUp(MultipartFile photo, HttpSession session) throws IOException { //获取上传的文件的文件名 String fileName = photo.getOriginalFilename(); //处理文件重名问题 String hzName = fileName.substring(fileName.lastIndexOf(".")); fileName = UUID.randomUUID().toString() + hzName; //获取服务器中photo目录的路径 ServletContext servletContext = session.getServletContext(); String photoPath = servletContext.getRealPath("photo"); File file = new File(photoPath); if(!file.exists()){ file.mkdir(); } String finalPath = photoPath + File.separator + fileName; //实现上传功能 photo.transferTo(new File(finalPath)); return "success"; }
第二种方式
第一种方式
spring:
servlet:
multipart:
max-file-size: -1 # 不限制文件上传的大小
enabled: true # 可以不用写, 默认就是 true
在 控制层可以使用 Part 来接收文件上传的对象
@RestController @RequestMapping("/test") public class TestController { /** * 实现文件上传与下载 * @param part * @return */ @PostMapping("/upload") public ResponseEntity<byte[]> upload(@RequestPart("photo") Part part) throws Exception{ //将上传的图片转换为流 InputStream inputStream = part.getInputStream(); //将流转为字节数组 byte[] bytes = inputStream.readAllBytes(); //设置响应头 return ResponseEntity.ok().contentType(MediaType.IMAGE_GIF).body(bytes); } }
第二种方式
spring:
servlet:
multipart:
enabled: false
@Bean("multipartResolver")
public MultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("UTF-8");
resolver.setMaxUploadSize(-1);
return resolver ;
}
<!--new CommonsMultipartResolver()文件上传-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
/**
* 第二种文件上传的方式 需要引入jar依赖
* photo为接收图片的参数名
* @param part
* @return
* @throws Exception
*/
@PostMapping("/upload2")
public ResponseEntity<byte[]> upload2(@RequestParam("photo") MultipartFile part) throws Exception{
byte[] bytes = part.getBytes();
//设置响应头
return ResponseEntity.ok().contentType(MediaType.IMAGE_GIF).body(bytes);
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。