一、jsp页面:
id="addProductForm" action="${ctx}/product/add" method="post" enctype="multipart/form-data">........
二、页面ajax提交请求:
var fd = new FormData(document.getElementById("addProductForm")); //不能用jquery的 $("#addProductForm")
fd.append("label", "WEBUPLOAD");
$.ajax({
url: "${ctx}/product/doAdd",
type: "POST",
data: fd,
enctype: 'multipart/form-data',
processData: false,
contentType: false
}).done(function(data) {
if(data.result){
closeWindow();
$('#productTable').datagrid('load');
}
});
三、controller代码:
1、Listmfiles = new ArrayList();
mfiles = BaseUtil.batchUploadPictures(request, mfiles);
2、public static ListbatchUploadPictures(HttpServletRequest request, Listmfiles){
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获取前台传值
MapfileMap = multipartRequest.getFileMap();
StringBuffer dirSB = new StringBuffer(System.getProperty("web.root"));
dirSB.append(File.separator);
dirSB.append("upload");
dirSB.append(File.separator);
String dateDir = DateUtil.formatDatePattern(new Date(), "yyyyMM");
dirSB.append(dateDir);
dirSB.append(File.separator);
// 创建文件夹
File dir = new File(dirSB.toString());
if (!dir.exists()) {
dir.mkdirs();
}
for (Map.Entryentity : fileMap.entrySet()) {
// 上传文件名
MultipartFile mf = entity.getValue();
String fileName = mf.getOriginalFilename();
String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
try {
dirSB.append(newFileName);
FileCopyUtils.copy(mf.getBytes(), new File(dirSB.toString()));
mfiles.add("/upload/" + dateDir +"/"+ newFileName);
} catch (Exception e) {
e.printStackTrace();
}
}
return mfiles;
}