一、引入依赖
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
二、前端页面
注意事项:
- method=“post”
- enctype=“multipart/form-data”
<form method="post" action="${pageContext.request.contextPath}/file/upload" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传文件">
</form>
三、配置文件上传解析器
注意事项:
- id必须为 multipartResolver
springmvc
<!-- 配置文件上传解析器 -->
<!-- 注意:id必须为 multipartResolver -->
<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver">
<!-- 文件大小限制为5M -->
<property name="maxUploadSize" value="5242880"/>
</bean>
四、文件上传Controller
注意事项:
- 参数MultipartFile file这里的"file"要与前端页面的"name"属性值一致
- 保存的文件路径若文件夹不存在,要提前创建,不然会一直报错
package cool.gjh.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
/**
* 文件上传下载
*
* @author ACE_GJH
*/
@Controller
@RequestMapping("/file")
public class FileUpDownLoad {
@PostMapping("/upload")
public String fileUpLoad(MultipartFile file, Model model, HttpServletRequest request){
if (file == null) {
return "fileUpLoadFail";
}
//获取存放文件的绝对路径
String realPath = request.getSession().getServletContext().getRealPath("/files");
//获取文件名
String filename = file.getOriginalFilename();
model.addAttribute("filename", filename);
//将文件保存到文件夹
try {
File dest = new File(realPath, filename);
file.transferTo(dest);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("文件保存异常!");
}
return "fileUpLoadSuccess";
}
}
五、测试效果