spring MVC 实现文件上传
首先引入jar包
commons-io-1.3.2.jar
commons-fileupload-1.2.1.jar
配置文件解析
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 上传文件大小上限,单位为字节(10MB) -->
<property name="maxUploadSize">
<value>10485760</value>
</property>
<!-- 请求的编码格式,必须和jSP的pageEncoding属性一致,以便正确读取表单的内容,默认为ISO-8859-1 -->
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
</bean>
控制层
@RequestMapping(value = "/photoUpload", method = RequestMethod.POST)
@ResponseBody
public JSONObject upload(HttpServletRequest request, String mobile, @RequestParam("file") MultipartFile file)
throws Exception {
File newFile = new File(request.getServletContext().getRealPath("/"));
// 获取当前项目的父文件位置
File parentFile = newFile.getParentFile();
String path = parentFile.getAbsolutePath() + PropertiesUtil.getValue(imageCode);
File filepath = new File(path);
// 获取图片名称
String filename = file.getOriginalFilename();
// 获取后缀
String fileType = filename.substring(filename.indexOf("."), filename.length());
// jpg、jpeg、png
// 判断文件格式是否可用
List<String> types = new ArrayList<String>();
types.add(".jpg");
types.add(".png");
types.add(".jpeg");
types.add(".mp4");
types.add(".mp3");
types.add(".avi");
types.add(".mov");
types.add(".wmv");
types.add(".rm");
types.add(".rmvb");
types.add(".vcd");
types.add(".svcd");
if (!types.contains(fileType)) {
// 图片不可用
return null;
}
// 判断路径是否存在,如果不存在就创建一个
if (!filepath.exists()) {
filepath.mkdirs();
}
// 将图片名称编码以免重复
String firstName = MD5.getMD5Str(filename + new Date().getTime());
String fileName = firstName + fileType;
// 将上传图片保存到一个目标文件夹当中
file.transferTo(new File(path + File.separator + fileName));
filePath = fileName;
System.out.println(path + File.separator + fileName);
}
工具
public static String getFileUpladName(HttpServletRequest request, @RequestParam("files") MultipartFile file,
String imgCode) {
String fileNewName = "";
try {
// 调用业务层
if (StringUtils.isBlank(imgCode)) {
// 没有输入图片保存类型
return null;
}
if (file.isEmpty()) {
// 图片为空
return null;
}
// String imgCode = "userPhotoPath";
// 获取图片保存路径
String path = getFilePath(request, imgCode);
// 图片上传
fileNewName = fileUpload(file, path);
} catch (Exception e) {
e.printStackTrace();
}
return fileNewName;
}
/**
*
* @Description: 获取图片保存路径
* @CreateTime: 2018年2月24日 上午10:14:27
*/
public static String getFilePath(HttpServletRequest request, String imageCode) {
File newFile = new File(request.getServletContext().getRealPath("/"));
// 获取当前项目的父文件位置
File parentFile = newFile.getParentFile();
String path = parentFile.getAbsolutePath() + PropertiesUtil.getValue(imageCode);
return path;
}
/**
*
* @Description: 图片上传
* @CreateTime: 2018年2月24日 上午10:09:34
*/
public static String fileUpload(MultipartFile file, String path) {
String filePath = "";
try {
File filepath = new File(path);
// 获取图片名称
String filename = file.getOriginalFilename();
// 获取后缀
String fileType = filename.substring(filename.indexOf("."), filename.length());
// jpg、jpeg、png
// 判断文件格式是否可用
List<String> types = new ArrayList<String>();
types.add(".jpg");
types.add(".png");
types.add(".jpeg");
types.add(".mp4");
types.add(".mp3");
types.add(".avi");
types.add(".mov");
types.add(".wmv");
types.add(".rm");
types.add(".rmvb");
types.add(".vcd");
types.add(".svcd");
if (!types.contains(fileType)) {
// 图片不可用
return null;
}
// 判断路径是否存在,如果不存在就创建一个
if (!filepath.exists()) {
filepath.mkdirs();
}
// 将图片名称编码以免重复
String firstName = MD5.getMD5Str(filename + new Date().getTime());
String fileName = firstName + fileType;
// 将上传图片保存到一个目标文件夹当中
file.transferTo(new File(path + File.separator + fileName));
filePath = fileName;
System.out.println(path + File.separator + fileName);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return filePath;
}