已經是第二次用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.csdn.net/u013410747/article/details/49700103