<form id="multipleUploadForm" action="multipleUpload.html" method="post" enctype="multipart/form-data">
<table>
<tr>
<td colspan="2" align="center">
<button type="button" οnclick="addFileInput()">+</button>
<button type="button" οnclick="deleteFileInput()">-</button>
</td>
</tr>
<tr>
<td>文件</td>
<td><input type="file" name="file"></td>
</tr>
<tr>
<td>文件</td>
<td><input type="file" name="file1"></td>
</tr>
<tr>
<td colspan="2" align="center">
<button type="button" οnclick="doMultipleUpload()">上传</button>
<button type="button" οnclick="hide('multipleUpload')">返回</button>
</td>
</tr>
</table>
</form>
function addFileInput(){
var $fileInput = $("#multipleUploadForm").find("input[type=file]");
var len = $fileInput.length;
var $lastTr = $fileInput.eq(len - 1).parent().parent();
var $newTr = $lastTr.clone();
$newTr.find("input[type=file]").attr("name", "file" + len);
$newTr.insertAfter($lastTr);
}
function deleteFileInput(){
var $fileInput = $("#multipleUploadForm").find("input[type=file]");
var len = $fileInput.length;
if(len < 2) return;
var $lastTr = $fileInput.eq(len - 1).parent().parent();
$lastTr.remove();
}
function doMultipleUpload(){
if(multipleUploadFormValidateor.form()){
$("#multipleUploadForm").ajaxSubmit({
success:function(data){
if(data == "success") {
$("#searchForm").submit();
}else{
alert("上传失败");
}
}
});
}
}
@RequestMapping("multipleUpload")
@ResponseBody
public String multipleUpload(HttpServletRequest request){
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
String destDir = request.getServletContext().getRealPath("/") + Constant.FILE_PATH;
try {
File dir = new File(destDir);
if(!dir.exists()){
dir.mkdir();
}
String realFileName;
File destFile;
for (Entry<String, MultipartFile> entry : fileMap.entrySet()){
MultipartFile multipartFile = entry.getValue();
realFileName = multipartFile.getOriginalFilename();
destFile = new File(destDir + realFileName);
multipartFile.transferTo(destFile);
// 上传完插入记录到数据库
Map<String,Object> map = new HashMap<String,Object>();
map.put("fileId", UUID.randomUUID().toString());
map.put("fileName", realFileName);
map.put("fileType", realFileName.substring(realFileName.lastIndexOf(".") + 1));
map.put("fileSize", multipartFile.getSize());
map.put("uploadDate", DateUtils.getDate());
map.put("uploadTime", DateUtils.getTime());
int i = MybatisUtils.insert("file.mysql.insertFile", map);
if(i == 0){
// 操作数据失败,把上传的文件删除
destFile.delete();
return "failure";
}
System.out.println(destFile.getAbsolutePath());
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "failure";
}
return "success";
}
springMVC中的多文件上传,要求页面的input标签name属性不能相同,否则只当一个文件