SpringMVC form表单 上传多个文件
参考 http://www.cnblogs.com/dongying/p/4388464.html
上传多张图片的后台
<!--第一步:引入.js文件 ajaxSubmit需要jquery.form.js-->
<script type="text/javascript"
src="<%=basePath%>/resources/js/jquery.min.js"></script>
<script type="text/javascript"
src="<%=basePath%>/resources/js/jquery.validate.min.js"></script>
<script type="text/javascript"
src="<%=basePath%>/resources/js/jquery.form.js"></script>
<!--第二步 新增表单区域开始:enctype="multipart/form-data" -->
<form id="createForm" method="post" action="" class="add-new-area">
<ul>
<!--第三步 前台表单中的所有<input type="file" name="files"/>的name都应该是files -->
<li class="piclis"><label></label><input type="file"
name="files" class="img-btn"></li>
<li class="piclis"><label></label><input type="file"
name="files" class="img-btn"></li>
<li class="piclis"><label></label><input type="file"
name="files" class="img-btn"></li>
<!--第四步 提交表单 -->
<li><input type="submit" class="btn save-btn" value="保存">
</li>
</ul>
</form>
<script>
$("#createForm").validate({
//做表单验证
//验证成功后提交参数
submitHandler : function(form) {
ajaxSubmit();
}
});
/*提交表单*/
function ajaxSubmit() {
$("#createForm").ajaxSubmit({
type : 'post',
url : "weatherForecast/create", //变量
error : function() {//请求失败处理函数
alert("失败");
},
success : function(data) { //请求成功后处理函数。
alert("成功");
}
});
}
</script>
前台表单中的所有的name都应该是files,否则参数里的files无法获取到所有上传的文件
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.bind.annotation.ResponseBody;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.RequestMapping;
@ResponseBody
@RequiresPermissions("weatherForecast:create")
@RequestMapping("/weatherForecast/create")
public AjaxResponseMsg createWeatherForecast(WeatherForecast weatherForecast, HttpServletRequest request,
HttpSession session) throws IOException {
/*1.用HttpServletRequest接收前台的参数*/
List<MultipartFile> files = null;
/* 2.如果是上传文件请求,获取文件列表*/
if (request instanceof MultipartHttpServletRequest) {
files = ((MultipartHttpServletRequest) request).getFiles("files");
}
String basePath = session.getServletContext().getRealPath("/");// 项目路径
/* 3.如果文件列表不为空,循环文件列表,保存文件 */
if (files != null) {
for (MultipartFile file : files) {
/* 3.1保存图片 */
String picUrl = HandleFile.saveFile(file, basePath);
/* 3.2 其他后续操作 */
} /*end for()*/
} /*end if*/
}
如果是上传多张图片
1.使用 HttpServletRequest接收前台的参数
2.判断 这次请求是不是 上传文件请求,如果是,用request 获取文件列表
这样,即使前台没有上传文件,也不会出错
如果直接用MultipartFile[] 数组接收参数,可能会报错
org.springframework.web.multipart.MultipartException: The current request is not a multipart request
保存文件的方法HandleFile.saveFile()
http://blog.csdn.net/dreamstar613/article/details/53841438