18年记录的,过时喽
<!-- 多部分文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="104857600" />
<property name="maxInMemorySize" value="4096" />
<property name="defaultEncoding" value="UTF-8"></property>
</bean>
package com.ssm.util;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.Map.Entry;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.ServletContextAware;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import com.alibaba.fastjson.JSONObject;
import com.ssm.framework.util.GeneralConstant;
import com.ssm.modules.user.entity.TsUserProfile;
public class UploadFileTest implements ServletContextAware{
private ServletContext sc;
public void setServletContext(ServletContext servletContext) {
this.sc = servletContext;
}
@RequestMapping(value = "/app/uploadFile", method = RequestMethod.POST)
@ResponseBody
public JSONObject uploadFile(HttpServletRequest request) {
JSONObject jObject = new JSONObject();
String status = "300", msg = "参数异常";
try {
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
String content;
MultipartHttpServletRequest multipartRequest=null;
if(resolver.isMultipart(request)){//判断是否是文件上传
multipartRequest = resolver.resolveMultipart(request);
content = multipartRequest.getParameter("content");// 文字
}else{
content=request.getParameter("content");
}
if (StringUtils.isNotBlank(content)) {
String imgStr ="";
if(multipartRequest!=null){
Map<String, List<MultipartFile>> multiFileMap = multipartRequest.getMultiFileMap();
//如果是多个map 传值,需要重新编写
for (Entry<String, List<MultipartFile>> entry : multiFileMap.entrySet()) {
List<MultipartFile> fileList = entry.getValue();
if(CollectionUtils.isNotEmpty(fileList)){
imgStr=upImgBatch(sc,fileList,0,9,"images/userProfile/");
}
}
}
if(StringUtils.isNotBlank(imgStr)){
TsUserProfile record = new TsUserProfile();
if(StringUtils.isNotBlank(imgStr)){
record.setImages(imgStr);
}
status="200";msg="发布成功";
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
jObject.put("msg", msg);
jObject.put("status", status);
}
return jObject;
}
/**
* 批量
* @param sc
* @param fileList 文件List
* @param filenum 开始数量
* @param maxnum 最大数量
* @param filepRefix 路径前缀
* @return
* @throws Exception
*/
public static String upImgBatch(ServletContext sc,List<MultipartFile> fileList,int filenum,int maxnum,String filepRefix) throws Exception{
StringBuilder img = new StringBuilder();
List<String> list=new ArrayList<String>(maxnum);
for (int i = 0; i < fileList.size(); i++) {
MultipartFile file=fileList.get(i);
if (!file.isEmpty()&&filenum<maxnum&&checkFile(file)){
filenum++;
String fileName =filepRefix+ ThumbnailsImageUtil.fileName(file.getOriginalFilename());
String dirPath = sc.getRealPath(GeneralConstant.WEB_RES +fileName);
File dir = new File(dirPath);
if (!dir.getParentFile().exists()) {// 路径检测
dir.getParentFile().mkdirs();
}
file.transferTo(dir);
list.add(fileName);
img.append(fileName + ",");
}
}
if(CollectionUtils.isNotEmpty(list)){
Map<String,File> mapin=new HashMap<String,File>(maxnum);
for (String string : list) {
File tempFile = new File(GeneralConstant.REAL_PATH+GeneralConstant.WEB_RES + string);
if (tempFile.exists()){
mapin.put(string, tempFile);
}
}
}
return img==null?"":removeLastsymbol(img.toString(), ",");
}
/**
* 去除最后一位符号
* @param str
* @param symbol
* @return
*/
public static String removeLastsymbol(String str,String symbol){
if(StringUtils.isNotBlank(str)&&StringUtils.isNotBlank(symbol)
&&str.lastIndexOf(symbol)==(str.length()-1)){
str=str.substring(0,str.length() - 1);
}
return str;
}
/**
* 控制文件大小(30M)和类型
* 判断是否为允许的上传文件类型,true表示允许
*/
private static boolean checkFile(MultipartFile file) {
if(file.getSize() < 31457280){//设置文件大小
String fileName =file.getOriginalFilename();
//设置允许上传文件类型
String suffixList = "ico,bmp,jpg,png,tif,gif,pcx,tga,exif,fpx,"
+ "svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw,WMF,webp,jpeg";
// 获取文件后缀
String suffix = fileName.substring(fileName.lastIndexOf(".")
+ 1, fileName.length());
if (suffixList.contains(suffix.trim().toLowerCase())) {
return true;
}
}
return false;
}
/**
* 重新定义文件名称
* @param fileName
* @return
*/
public static String fileName(String fileName){
return UUID.randomUUID().toString().replaceAll("-", "")+getFileSuffixName(fileName);
}
/**
* 获取文件后缀名
* @param fileName
* @return
*/
private static String getFileSuffixName(String fileName){
if (fileName.length() > 10)
fileName = fileName.substring(10);
String suffix = ".jpg";
if (fileName.indexOf(".") != -1)
suffix = fileName.substring(fileName.lastIndexOf(".")).toLowerCase();//toLowerCase()用于将大写字符转换为小写
return suffix;
}
}