MutipartResolver:是springMvc中的类
需要在spring中配置一下
//参数传入
@实现的代码:
/**
* 上传图片
* @param urlfile 图片
* @param backUrl 图片上传完成后 需要执行的类的方法 该方法默认参数都是Attachment 返回类型都是Result
* @param module 上传文件夹名字
* @param extendFile 上传文件格式后缀
* @return
*/
@Override
@Transactional
public Result mobileUploadAttachment(MultipartFile urlfile, Object[] backUrl,String module,String[]extendFile,String type) {
String fileName = null;
Attachment attachment=null;
try {
if (urlfile.isEmpty()) {
return ResultUtils.returnError("上传文件失败");
} else {
String basePath = SpringMVCUtils.getRequest().getRealPath("/upload/" + module);
String path = null;
fileName = urlfile.getOriginalFilename();
boolean isFile = StringUtils.endsWithAny(StringUtils.lowerCase(fileName),extendFile );
String sysFileName = UniqueUtils.getOrder() + "." + StringUtils.substringAfter(fileName, ".");
//文件格式
if (isFile) {
path = basePath + "/" + sysFileName;
} else {
return ResultUtils.returnError("文件格式不正确,上传文件失败");
}
urlfile.transferTo(new File(path));
//文件大小
Double size=DoubleUtils.div(urlfile.getSize(),1024000.0, 2);//单位 M
if(type.equals("0")){//上传图片
if(size>2){
return ResultUtils.returnError("请上传2M以内的图片");
}
attachment = new Attachment();
attachment.setName(fileName);
attachment.setAddress("upload/" + module +"/"+ sysFileName);
attachment.setMemory(size);//记录文件大小 (单位 M)
//设置图片的尺寸
BufferedImage bufferedImage=null;
try {
bufferedImage = ImageIO.read(new File(path));
int width = bufferedImage.getWidth();
int height = bufferedImage.getHeight();
attachment.setSizeInfo(width+","+height);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
UpLoadUtils.alyUpload(module, sysFileName, path,initParam);//上传
} else if(type.equals("1")){//上传视频
if(size>20){
return ResultUtils.returnError("请上传20M以内的视频");
}
attachment = new Attachment();
attachment.setName(fileName);
attachment.setAddress("upload/" + module +"/"+ sysFileName);
attachment.setMemory(size);//记录文件大小 (单位 M)
UpLoadUtils.alyUpload(module, sysFileName, path,initParam);//上传
}
//反射 保存实体
Object obj=backUrl[0];
Class<? extends Object> clazz=obj.getClass();
Method method=clazz.getDeclaredMethod(backUrl[1].toString(), attachment.getClass());
Object returnObj=method.invoke(obj,attachment);
if(returnObj==null){
logger.error("上传图片回调方法返回数据为空");
return ResultUtils.returnError("上传失败");
}
return (Result) returnObj;
}
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//回滚数据
logger.error("图片上传发生异常:"+e.getMessage());
return ResultUtils.returnError("上传失败");
}
}