首页 > 代码库 > SpringMvc的上传和下载
SpringMvc的上传和下载
第一步:配置文件加入上传和下载的<bean>全部配置文件参考上上篇博文
1 <!-- 配置springMVC上传文件和下载文件 -->2 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">3 <property name="defaultEncoding" value="utf-8"></property><!-- 编码格式,与jsp格式一致 -->4 <property name="maxUploadSize" value="52428880"></property><!-- 文件上传的最大限制 5mb -->5 <property name="uploadTempDir" value="upload/temp"></property><!-- 上传文件的临时路径。文件上传后,会自动消失 -->6 <property name="maxInMemorySize" value="4096"/> 7 </bean>
第二步:WEB-INF/lib下必加入:commons-fileupload.jar与commons-io-1.4.jar二个文件
第三步:表单属性为: enctype="multipart/form-data"
单文件上传的Controller中的方法
1 /** 2 * SpringMVC的文件上传 3 * 【1】上传的文件,会自动被绑定到MultipartFile的对象中。该对象的api 4 * (1)byte[] getBytes()获取文件数据 5 * (2)String getContentType()获取文件的MIME类型,如image/pjpeg,text/plain等 6 * (3)InputStream getInputStream()获取文件流 7 * (4)Sring getName()获取表单中文件组件的名称 8 * (5)String getOriginalFilename()获取上传文件的原名 9 * (6)long getSize()获取文件的字节大小,单位为byte10 * (7)boolean isEmpty():是否有上传的文件11 * (8)void transferTo(File dest) 可以使用给文件将上传文件保存到一个目标目录下 12 * @Title: uploadMyPictrue 13 * @Description: TODO(这里用一句话描述这个方法的作用) 14 * @param file 为前台form表单中<input type="file" name="file"/>中的name15 * @return16 * @return String 返回类型 17 * @author 尚晓飞18 * @date 2014-10-31 下午2:01:2319 */20 @RequestMapping("/uploadMyPictrue")21 public String uploadMyPictrue(HttpServletRequest request,@RequestParam("file") MultipartFile file){22 System.out.println("StudentController.uploadMyPictrue()");23 boolean flag=file.isEmpty();24 if(!file.isEmpty()){25 String mimesString=file.getContentType();//获取mime类型26 System.out.println("MiME:"+mimesString);//MiME:image/jpeg27 long size=file.getSize();28 System.out.println("size:"+size);//size:8906729 String nameString=file.getName();30 System.out.println("组件名称:"+nameString);//组件名称:file31 String realName=file.getOriginalFilename();32 System.out.println("文件原名:"+realName);//文件原名:图片.jpg33 34 //获取项目跟目录35 String path=request.getSession().getServletContext().getRealPath("");36 //拼接上传文件的存放目录37 path=path+"/uploadfile";38 //为上传文件起一个新名字39 Integer index=realName.lastIndexOf(".");40 String suffix=realName.substring(index);41 //获取当前时间戳42 long fileNam=System.currentTimeMillis();43 String fileNames=fileNam+suffix;//新的完整文件名44 String pathString=path+"/"+fileNames;45 File file2=new File(pathString);46 47 if(!file2.exists()){48 file2.mkdir();//不存在就创建文件49 }50 //将文件上传到项目制定的目录下51 52 try {53 file.transferTo(file2);54 } catch (IllegalStateException e) {55 // TODO Auto-generated catch block56 e.printStackTrace();57 } catch (IOException e) {58 // TODO Auto-generated catch block59 e.printStackTrace();60 }finally{61 62 }63 64 65 }else{66 //上传文件为空67 }68 return "/page/success";69 }
多文件上传的controller中的方法
1 /** 2 * 多文件上传 3 * @Title: moreUploadFile 4 * @Description: TODO(这里用一句话描述这个方法的作用) 5 * @param request 6 * @param response 7 * @param errors 8 * @return 9 * @return String 返回类型 10 * @author 尚晓飞11 * @date 2014-10-31 下午3:12:1612 */13 @RequestMapping("/moreUploadFile")14 public String moreUploadFile(HttpServletRequest request,HttpServletResponse response ){15 //将请求作用域转换成上传作用域16 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; 17 //获取封装了多个上传文件的map18 Map<String, MultipartFile> fileMap=multipartRequest.getFileMap();19 //获取项目根目录20 String rootPath=request.getSession().getServletContext().getRealPath("");21 //拼接上传目录22 rootPath=rootPath+"\\uploadfile";23 //逐个上传文件24 Set<String> set=fileMap.keySet();25 for(String name:set){26 //该name的值,为前台form表单中<input type="file" name="xxx">中的xxx27 MultipartFile file=fileMap.get(name);28 String filename=file.getOriginalFilename();29 String fileName=file.getName();//获取组件名 此处的值也是xxx的值30 File file2=new File(rootPath+"\\"+filename);31 if(file2.exists()){32 file2.mkdir();33 }34 try {35 file.transferTo(file2);36 } catch (IllegalStateException e) {37 // TODO Auto-generated catch block38 e.printStackTrace();39 } catch (IOException e) {40 // TODO Auto-generated catch block41 e.printStackTrace();42 }43 44 }45 46 47 48 return "/page/success";49 }
文件下载的controller中的方法
1 /** 2 * 文件下载 3 * @Title: downLoadFile 4 * @Description: TODO(这里用一句话描述这个方法的作用) 5 * @param request 6 * @param response 7 * @return void 返回类型 8 * @author 尚晓飞 9 * @date 2014-10-31 下午3:53:1610 */11 @RequestMapping("/downLoadFile")12 public void downLoadFile(String name,HttpServletRequest request,HttpServletResponse response){13 //模拟从数据库查处文件的名14 String fileName=name;15 //拼接文件全路径16 String rootPath=request.getSession().getServletContext().getRealPath("\\uploadfile")+"\\"+name;17 //生成文件18 File file=new File(rootPath);19 long fileLength =file.length();//获取文件的大小 20 21 //输入流和输出流22 BufferedInputStream bis = null; 23 BufferedOutputStream bos = null; 24 25 26 try {27 //设置下载的参数配置28 response.setContentType("text/html;charset=utf-8"); 29 request.setCharacterEncoding("UTF-8");30 response.setContentType("application/x-msdownload;"); 31 String files= new String(fileName.getBytes("utf-8"), "ISO8859-1");32 response.setHeader("Content-disposition", "attachment; filename="+files); 33 response.setHeader("Content-Length", String.valueOf(fileLength)); 34 35 //添加输入流36 bis=new BufferedInputStream(new FileInputStream(file));37 //添加输出流38 bos=new BufferedOutputStream(response.getOutputStream());39 byte[] buff = new byte[2048]; 40 int bytesRead; 41 while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { 42 bos.write(buff, 0, bytesRead); 43 } 44 45 } catch (Exception e) {46 // TODO Auto-generated catch block47 e.printStackTrace();48 }finally{49 try {50 if(bis!=null){51 bis.close();52 }53 if(bos!=null){54 bos.close();55 }56 } catch (IOException e) {57 // TODO Auto-generated catch block58 e.printStackTrace();59 }60 61 } 62 63 64 }
SpringMvc的上传和下载
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。