1.导入文件上传所需要的jar包
<dependencies>
<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>
</dependencies>
2.写一个前端页面
注意:
这个前端页面一定要有file输入项
form表单必须要有enctype="multipart/form-data"
method的属性必须为post
<h3>文件上传</h3>
<form action="/user/fileUpload" method="post" enctype="multipart/form-data">
选择文件:<input type="file" name="upload"/><br>
<input type="submit" value="上传"/>
</form>
3.后台程序
这里使用了fileUpLoad的相关jar包
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/fileUpload")
public String fileUpload(HttpServletRequest request) throws Exception {
System.out.println("文件上传");
//使用fileUpload组件完成文件上传
//上传的位置
String realPath = request.getSession().getServletContext().getRealPath("/uploads/");
System.out.println(realPath);
//判断该路径是否存在
File file = new File(realPath);
if(!file.exists()){
//创建该文件
file.mkdirs();
}
//解析request对象,获取上传文件项
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
//解析request
List<FileItem> fileItems = upload.parseRequest(request);
for(FileItem fileItem:fileItems){
//进行判断,当前文件是否为上传文件项
if(fileItem.isFormField()){
//说明为普通表单项
}else{
//说明为上传文件项
//获取到上传文件的名称
String fileName = fileItem.getName();
//防止文件上传被覆盖,将文件名设置为唯一的
String uuid= UUID.randomUUID().toString().replace("-","");
fileName = uuid+"_"+fileName;
//完成文件上传
fileItem.write(new File(realPath,fileName));
//删除临时文件
fileItem.delete();
}
}
return "success";
}
}