老规矩,写在工具类中
/**
* 文件上传(可用于图片上传)
* @param file 文件file
* @param fileURL 上传路径
* @param folderNames (可选填)需要添加的文件夹名称
* @param maxSize 文件最大限制(m为单位)
* @return string true为通过上传,然后传出消息,false失败上传,传出对应消息
*/
public static String saveFile(MultipartFile file, String fileURL, int maxSize, String...folderNames) {
//文件名称
String fileName=null;
// 判断文件是否为空
if (!file.isEmpty()) {
try {
//获取文件名加后缀
fileName = file.getOriginalFilename();
//文件后缀
String fileF = fileName.substring(fileName.lastIndexOf("."), fileName.length());
//格式判断
if(fileF.equalsIgnoreCase(".jpg") || fileF.equalsIgnoreCase(".png")
|| fileF.equalsIgnoreCase(".gif") || fileF.equalsIgnoreCase(".jpeg")){
maxSize=maxSize*1024*1024;
if(file.getSize() > maxSize){
return "FALSE:"+fileName + "文件超出最大上传,最大上传限制3M!";
}
//获取图片存储名称UUID形式
String name = UUID.randomUUID().toString();
String filePath = null;//路径名
String _filePath = null; //追加文件路径
int i = 0;
for (String s : folderNames) {
_filePath = s+"/";
if(i==0){
filePath = fileURL + _filePath;
i++;
}
}
filePath = filePath + _filePath;
filePath = filePath + name + fileF;
File saveDir = new File(filePath);
if (!saveDir.exists())
saveDir.getParentFile().mkdirs();
// 转存文件
file.transferTo(saveDir);
//返回存储文件名
return "TRUE:"+filePath;
}else{
return "FALSE:"+fileName+"文件不是符合图片格式要求(jpg/jpeg/png/gif)";
}
} catch (Exception e) {
e.printStackTrace();
return "FALSE:"+fileName+"上传失败!异常信息:"+e.getMessage();
}
}
return "FALSE:"+"上传失败!文件可能为空!(文件不能为空!)";
}
OK完事,很简单,这个方法看懂了怎么掉用就看你自己了,反正封装好了适用我自己的,当然,返回值类型你们自己喜欢,用地图,数组等随便哦。下面说的都是控制器调用操作注意事项(无非就是你传参的注意事项),如果你想完全用我给的这个方法就要看,想改方法就没必要看了。(我一直很喜欢这么做,发方法看做一个电动玩具,里面都装好了改装的东东,用到的时候,给它装上对应的电池【就是参数】就可以完美运行了)
多图片上传在控制器添加一个multipartFile []数组类型的文件就可以了,文件名称相同就可以了文件(自定义)
@RequestParam("files") MultipartFile[] files
然后调用这个方法,方法里面都写好了,看懂的就自己优化改进,反正改来改去也就那样,自己喜欢咯
String str = PictureUploadingUtils.saveFile(coverFile,fileURL,maxSize,String.valueOf(_store.getId()));
注意:这个字段是我用来添加文件夹名称的folderNames
比如我想给追加文件名给里面加就是了,不想加就不加,可选填字段。
还有用于循环去做多图片保存,该方法只是是单图片上传,在控制器外面调用的时候为循环
MultipartFile[] files就可以了
for (int i = 0; i < files.length; i++) {
MultipartFile file = files[i];
// 保存店铺环境图
String str = PictureUploadingUtils.saveFile(file,fileURL,maxSize,String.valueOf(_store.getId()));
反正方法里面的看懂了基本上怎么调用你自己都会了,
String fileURL = "/Users/emcoo-03/www/simplyeat/uploads/";
//最大上传限制3M
int maxSize = 3;