栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springMVC配置环境实现文件上传和下载

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springMVC配置环境实现文件上传和下载

最近的项目中用到了文件的上传和下载功能,我觉着这个功能比较重要,因此特意把它提取出来自己进行了尝试。

下面就是springMVC配置环境实现文件上传和下载的具体步骤,供大家参考,具体内容如下

一、 基础配置:

maven导包及配置pom.xml,导包时除开springmvc的基础依赖外,需要导入文件上传下载时用到的commons-io.jsr和commons-fileupload.jar:

 
 4.0.0 
 filLoadTest 
 filLoadTest 
 war 
 0.0.1-SNAPSHOT 
 filLoadTest Maven Webapp 
 http://maven.apache.org 
  
 filLoadTest 
  
  
  
 maven-compiler-plugin 
 2.3.2 
  
  1.7 
  1.7 
  UTF-8 
   
   
  ${java.home}librt.jar 
   
  
  
  
  
  
  
 junit 
 junit 
 3.8.1 
 test 
  
  
 org.springframework 
 spring-webmvc 
 4.0.6.RELEASE 
  
  
 com.fasterxml.jackson.core 
 jackson-annotations 
 2.2.3 
  
  
 com.fasterxml.jackson.core 
 jackson-core 
 2.2.3 
  
  
 com.fasterxml.jackson.core 
 jackson-databind 
 2.2.3 
  
  
 commons-fileupload 
 commons-fileupload 
 1.3.1 
  
  
 commons-io 
 commons-io 
 2.4 
  
  
 

web.xml基础配置:

 
 
  
 字符集过滤器 
 encodingFilter 
 org.springframework.web.filter.CharacterEncodingFilter 
  
 字符集编码 
 encoding 
 UTF-8 
  
  
  
 encodingFilter 
  
 @RequestMapping(value = "/upLoadFile.do", method = RequestMethod.POST) 
 public void upLoadFile(HttpServletRequest request) 
 throws IllegalStateException, IOException { 
 // @RequestParam("file") MultipartFile file, 
 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver( 
 request.getSession().getServletContext()); 
 // 判断 request 是否有文件上传,即多部分请求 
 if (multipartResolver.isMultipart(request)) { 
 // 转换成多部分request 
 MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; 
 // 取得request中的所有文件名 
 Iterator iter = multiRequest.getFileNames(); 
 while (iter.hasNext()) { 
 // 取得上传文件 
 MultipartFile f = multiRequest.getFile(iter.next()); 
 if (f != null) { 
  // 取得当前上传文件的文件名称 
  String myFileName = f.getOriginalFilename(); 
  // 如果名称不为“”,说明该文件存在,否则说明该文件不存在 
  if (myFileName.trim() != "") { 
  // 定义上传路径 
  String path = "C:\Users\tuzongxun123\Desktop\" 
  + myFileName; 
  File localFile = new File(path); 
  f.transferTo(localFile); 
  } 
 } 
 } 
 } 
 } 
} 

当选择文件提交后,便会看到选中的文件被传到了代码中指定的位置,页面效果图如下

三、文件下载

文件下载需要获取下载文件的存储路径,这里只是手动填入,如果是在具体项目中,可以把文件名和上传后的存储路径保存在数据库中。然后增加一个文件列表的页面展示文件名和文件路径,然后点击下载的时候把相应的文件名和路径传到后台操作。

 
 @RequestMapping(value = "/downLoadFile.do") 
 public ResponseEntity download(@RequestParam("name") String name, 
  @RequestParam("filePath") String path) throws IOException { 
 File file = new File(path); 
 HttpHeaders headers = new HttpHeaders(); 
 String fileName = new String(name.getBytes("UTF-8"), "iso-8859-1");// 为了解决中文名称乱码问题 
 headers.setContentDispositionFormData("attachment", fileName); 
 headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); 
 return new ResponseEntity(FileUtils.readFileToByteArray(file), 
  headers, HttpStatus.CREATED); 
 } 

Html页面,这里只是简单的填写文件名和文件路径,用form表单提交到后台,然后后台会控制response在页面弹出保存文件路径的选择框,当然了,这里的后台我没有做什么处理,如果文件不存在是会报错的,可以进行相应的处理:
文件下载:  

 

页面视图如下:

如果文件不存在,报错如下:

以上就是本文的全部内容,希望对大家的学习有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/150064.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号