<head> <script src="jquery-2.1.4.js"></script> <script> $(function () { $("#upload").click(function () { $("#imgWait").show(); var formData = new FormData(); formData.append("myfile", document.getElementById("file1").files[0]); $.ajax({ url: "upload.ashx", type: "POST", data: formData, /** *必须false才会自动加上正确的Content-Type */ contentType: false, /** * 必须false才会避开jQuery对 formdata 的默认处理 * XMLHttpRequest会对 formdata 进行正确的处理 */ processData: false, success: function (data) { if (data.status == "true") { alert("上传成功!"); } if (data.status == "error") { alert(data.msg); } $("#imgWait").hide(); }, error: function () { alert("上传失败!"); $("#imgWait").hide(); } }); }); }); </script> </head> <body> 选择文件:<input type="file" id="file1" /><br /> <input type="button" id="upload" value="上传" /> <img src="wait.gif" style="display:none" id="imgWait" /> </body>
后台:
@RequestMapping("/solutionSubmit")
public ModelAndView solutionSubmit(HttpSession session,@RequestParam("file")CommonsMultipartFile file,HttpServletRequest request,ModelAndView model){
String username = request.getParameter("username");
String fileName = file.getOriginalFilename(); //获取文件名
int pid = Integer.parseInt(request.getParameter("pid"));
//String path = request.getSession().getServletContext().getRealPath("/solution");//开发期间,文件先放在这里,发布之后更换存储目录String path = req.getRealPath("/solution");
String path = request.getRealPath("/solution");
InputStream is = null;
OutputStream os = null;
try {
is = file.getInputStream();
os = new FileOutputStream(new File(path,fileName));
int length = 0;
byte[] buffer = new byte[1024];
while((length = is.read(buffer)) != -1){
os.write(buffer, 0, length);
}
boolean flag = service.saveSolutionToDB(username, path + "/" + fileName);
boolean mappingResult = service.insertPidMappingSid(pid);
if(flag && mappingResult){
model.addObject("msg", "上传成功,请等待专家审核,通过审核后电话联系您!");
model.setViewName("jsp/solutionSubmitStatus");
}else{
model.addObject("msg", "上传失败,请重新上传!");
model.setViewName("jsp/solutionSubmitStatus");
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
os.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return model;
}