zoukankan      html  css  js  c++  java
  • springmvc -》文件下载

    前言:

    1. 在项目webapp目录下创建files文件夹,并在springmvc文件夹中配置静态资源
    <mvc:resources location="/files/" mapping="/files/**"></mvc:resources>

             2.files目录下添加a.txt和test.zip

                 

      3.创建download.jsp

    <a href="files/a.txt">下载</a>

    启动项目:

    4.修改

    <a href="files/test.zip">下载</a>

    启动项目:

    根据两者对比,总结:访问资源时响应头如果没有设置Content-Disposition,浏览器默认按照inline值进行处理,也就是,能显示就显示,不能显示就下载

    正文:

    1. 导入依赖
    <dependency>
          <groupId>commons-fileupload</groupId>
          <artifactId>commons-fileupload</artifactId>
          <version>1.3.2</version>
        </dependency>

    2.修改超链接,并在配置文件中放行静态资源files,前面已经写过。

    <a href="download?filename=test.zip">下载</a>

    3.控制器开发

    @RequestMapping("download")
        public void download(String filename,HttpServletRequest req,HttpServletResponse resp) throws IOException{
            
            //设置响应流文件进行下载
            resp.setHeader("Content-Disposition","attachment;filename="+filename);
            ServletOutputStream sos = resp.getOutputStream();
            File file = new File(req.getServletContext().getRealPath("files"), filename);//这个路径为磁盘开始
            byte[] bytes = FileUtils.readFileToByteArray(file);
            sos.write(bytes);
            sos.flush();
            sos.close();
        }

    这样,任意格式都会以文件的形式下载了》》》》

    总结:修改响应头中Context-Disposition="attachment;filename=文件名", attachment下载以附件的形式下载。

  • 相关阅读:
    C# 利用DataTable批处理数据导入数据库
    人员基础信息一体化采集系统建设方案
    定时调用WebService方法同步数据
    进程间通信
    信号
    Linux进程基础
    来自硬件男的《信号与系统》整理笔记
    shell脚本编程(ubantu)
    Linux系统c语言开发环境
    Linux系统用户管理及VIM配置
  • 原文地址:https://www.cnblogs.com/dylq/p/10578151.html
Copyright © 2011-2022 走看看