第一步,引入文件上传的依赖坐标
<!-- 添加commons-fileupload 依赖 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
第二步,在配置文件中添加解析器
<!-- 文件上传与下载配置-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize">
<value>104857600</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
</bean>
第三步:写java代码
package com.zks.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
@Controller
public class FileController {
@RequestMapping("uploadFile")
public String uploadFile(HttpServletRequest request) {
MultipartHttpServletRequest mhsr = (MultipartHttpServletRequest) request;
MultipartFile multipartFile = mhsr.getFile("file");
try {
if (null != multipartFile && multipartFile.getSize() > 0) {
//获取项目部署的具体路径(绝对路径)
String basePath = request.getSession().getServletContext().getRealPath("/");
//创建一个文件夹
File upload = new File(basePath + "/upload");
if (!(upload.exists())) {
//如果文件不存在
upload.mkdir();
}
//设置文件名字 系统当前时间毫秒数当作名字
//getOriginalFilename()这个方法是用来获取文件的原始文件名字
String fileName = System.currentTimeMillis() + multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf("."));
multipartFile.transferTo(new File(upload, fileName));
request.setAttribute("msg","文件上传成功");
}else {
request.setAttribute("msg","文件上传失败");
}
} catch (Exception e) {
request.setAttribute("msg","文件上传失败");
e.printStackTrace();
}
return "result";
}
}
第四步:在web-INF文件夹下添加success.jsp文件获取msg信息
最终文件会被添加到web-IFO目录下。