已经是第二次用ajaxsubmit上传文件了,还是遇到很多问题,纠结一上午总算弄出来了。
1. java需要导入的jar包
commons-fileupload-1.2.jar(MultiPartHttpServletRequest类)
commons-io.jar(没有这个包会报错)
java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream
ajaxSubmit上传文件不能进入控制器,并且报错
原因:commons-fileupload jar 包从1.0升到1.1的时候。DeferredFileOutputStream.class被移除了,而commons-io jar存在DeferredFileOutputStream.class这个类
2.引入js文件
jquery.form.js(ajaxSubmit提交)
3.代码
html:
<form action="" id="testForm" enctype="multipart/form-data" method="post">
<input name="proCode" value="12" type="text">
<input name="itemEntry_image" class="projectfile" type="file"/>
<input name="itemEntry_file" class="projectfile" type="file"/>
<button id="testOK" type="button">测试</button>
</form>
js代码:
//按钮点击事件,ajaxSubmit提交
$("#testOK").click(function(){
$("#testForm").ajaxSubmit({
type : "POST",
url : base+'projectInfoController/insertSelective.do',
dataType:'JSON',
success : function(data) {
if(data){
alert(data.msg);
}
},
error : function(e) {
alert("操作失败!");
}
})
});
springmvc代码:
@ResponseBody
@RequestMapping(value="/addClassConfig",produces={"application/json;charset=UTF-8"})
public String addClassConfig(HttpSession session,ClassConfig record,HttpServletRequest request){
try{
if(request instanceof MultipartHttpServletRequest){
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile file= multipartRequest.getFile("uploadPic");//命名冲突,二进制流文件,不是字符串
String pictureURL = null;
//先保存附件
if(file!=null){
String fileName=new Date().getTime()+"_"+file.getOriginalFilename();
String project_path=session.getServletContext().getRealPath("/");
pictureURL = SessionCode.IMAGES_ICON_CONFIG+fileName;
String completePath=project_path + pictureURL;
File uploadFile=new File(completePath);
if(!uploadFile.exists()){
uploadFile.mkdirs();
}
file.transferTo(uploadFile);
}
record.setPictureURL(pictureURL);
}
record.setId(UUIDFactory.getUUIDStr());
int flag = classConfigService.insert(record);
if(flag<=0){
return this.setError("操作失败!");
}
}catch(Exception e){
logger.error("[addClassConfig]"+e.getMessage());
return this.setError("操作失败!");
}
return this.setSuccess("操作成功!");
}
参考:http://zhupan.iteye.com/blog/26427
参考:http://blog.youkuaiyun.com/u013410747/article/details/49700103