SpringMVC文件上传和下载

倖福魔咒の 提交于 2020-02-07 03:58:55

SpringMVC文件下载
一、.访问资源时响应头如果没有设置Content-Disposition,浏览器默认安装inline进行处理
        能显示就显示,不能就下载
二、只需修改响应头Context—Disposition="attachment;filename=文件名"
      attachment以附件形式下载
      filename=文件名,就是下载时显示的文件名
三、.实现步骤
     1、导入Apache 两个jar包
     2、‘jsp中添加超链接,设置要下载的文件

<a href="download?fileName=a.txt">下载</a>

     3、springMVC中放行静态资源files文件夹
     4、编写控制器方法

 1 //** 文件下载
 2 @RequestMapping("download")
 3 public void download(String fileName,HttpServletRequest req, HttpServletResponse res) throws IOException {
 4 //PrintWriter out =res.getWriter();输出字符流
 5 //输出二进制字节流
 6 //res.setContentType();
 7 res.setHeader("Content-Disposition","attament;filename="+fileName);//上面等效,xx.txt下载时文件名
 8 //二进制字节流放响应体中
 9 ServletOutputStream os=res.getOutputStream();
10 // req.getServletContext()取应用程序对象
11 // getRealPath("files")获取资源文件夹完整路径,java获取文件路径必须从磁盘根目录
12 String path = req.getServletContext().getRealPath("files");
13 System.out.println(path);
14 File file = new File(path, fileName);
15 byte[] bytes = FileUtils.readFileToByteArray(file);
16 os.write(bytes);
17 os.flush();
18 os.close();
19 }

 

SpringMVC文件上传
     一、.基于Apache的commons-fileupload.jar完成文件上传
    二、’.MultipartResovler作用
          把客户端上传的文件流转换成MultipartFile封装类,通过MultipartFile封装类获取到文件流
    三、.表单数量类型分类
      1、在<form>的enctype属性控制表单类型
              默认值:enctype="application/x-www-form-urlencoded" 普通表单数据(少量文字信息)
       2、 text/plain 大量文字信息时,如邮件
       3、multipart、form-data表单中包含二进制文件内容
四.实现步骤
    .1、导入SpringMVC包和Apache的commons-fileupload.jar和commons-io包
    .2、编写JSP
   <!--method用post,post是字节流最大2GB,get字符流最大2KB-->
   <form action="upload" method="post" enctype="multipart/form-data">
         姓名<input type="text" name="name"><br/>
         文件<input type="file" name="file"><br/>
       <input type="submit" value="提交">
  </form>
     3、配置springmvc.xml
<!--MultipartResolver解析器,文件上传-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="20000"></property>
</bean>
<!--异常解析器-->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings" >
<props>
<!--上传文件大小超过设置字节数时跳转-->
<prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">/error.jsp</prop>
</props>
</property>
</bean>
     4、编写控制器
MultipartFile对象名必须和<input type"file"/>的nama属性相同

 

 1   //文件上传
 2 @RequestMapping("upload")
 3     public String upload(MultipartFile file,String name) throws IOException {
 4 
 5         String filename = file.getOriginalFilename();
 6         String suffix=filename.substring(filename.lastIndexOf("."));
 7         //判断文件类型
 8         if(suffix.equalsIgnoreCase(".png")){
 9             String uuid=UUID.randomUUID().toString();
10             FileUtils.copyInputStreamToFile(file.getInputStream(),new File("E:/"+uuid+suffix));
11             return "index.jsp";
12         }else{
13             return "error.jsp";
14 
15         }
16     }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!