SpringMVC+Ajax实现文件批量上传和下载功能实例代码
今天做了文件的上传下载,小小总结一下,基本的web项目建立及SpringMVC框架搭建此处不详细写出来了。
上传form:
上传Ajax:
/* *上传文件 */ functionupload(){ varformData=newFormData($("#uploadfiles")[0]); $.ajax({ type:"post", url:"./path/upload", dataType:"json", data:formData, /** *必须false才会自动加上正确的Content-Type */ contentType:false, /** *必须false才会避开jQuery对formdata的默认处理 *XMLHttpRequest会对formdata进行正确的处理 */ processData:false, success:function(data){//从后端返回数据进行处理 if(data){ alert("上传成功!"); }else{ alert("上传失败!"); } }, error:function(err){//提交出错 $("#msg").html(JSON.stringify(err));//打出响应信息 alert("服务器无响应"); } }); }
spring.xml配置加上:
controller: /* *上传多个文件 */ @RequestMapping(value="/upload",produces="application/json;charset=UTF-8") public@ResponseBody booleanuploadFiles(@RequestParam("file_upload")MultipartFile[]files){ booleanresult=false; StringrealPath; for(inti=0;i 下载的jsp页面代码根据需求不同自己设计,这里给出controller代码:
/* *下载多个文件 */ @RequestMapping(value="/download") publicvoiddownloadFiles(HttpServletResponseresponse){ Stringstr=request.getParameter("rows");//下载文件信息,包括文件名、存储路径等 JSONArraypath=(JSONArray)JSONArray.parse(request.getParameter("rows")); Pathpaths[]=newPath[path.size()]; paths=JSONArray.parseArray(str,Path.class).toArray(paths); Stringuri="d:"+File.separator+"mldn.zip";//临时文件存储路径 FilezipFile=newFile(uri);//定义压缩文件名称 ZipOutputStreamzipOut=null;//声明压缩流对象 InputStreaminput=null; //将要压缩的文件加入到压缩输出流中 try{ zipOut=newZipOutputStream(newFileOutputStream(zipFile)); }catch(FileNotFoundExceptione){ e.printStackTrace(); } for(inti=0;i将多个文件打成一个压缩包下载,然后将生成的临时压缩文件删除。
下载页面如果用Ajax提交请求的话要注意:ajax函数的返回类型只有xml、text、json、html等类型,没有“流”类型,所以我们要实现ajax下载,不能够使用相应的ajax函数进行文件下载。但可以用js生成一个form,用这个form提交参数,并返回“流”类型的数据。
例子:
functiondownload(){ varform=$("总结
以上所述是小编给大家介绍的SpringMVC+Ajax实现文件批量上传和下载功能实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!