• SpringMVC的下载


    [1] 下载的基本流程

    文件的上传是将用户本地的资源发送到服务器,让服务器存储到其硬盘中的过程。

    而下载和上传正好是相反的过程。下载是用户发起请求,请求要下载的资源。服务器

    根据请求,将其硬盘中的文件资源发送给浏览器的过程。

    [2] 下载的请求数据

    用户通过浏览器发起下载请求,服务器在接收到请求后,根据当前请求的用户信息,去 数据库中获取当前用户要下载的资源的文件路径,然后服务器再去其硬盘中读取对应的 文件,将文件响应给浏览器,基于此过程,下载请求的请求数据为:

    简单的下载:文件的路径直接作为一个字段存储在用户信息表中

    用户的ID。

    复杂的下载:数据库中专门有一张表记录要下载的文件资源

    用户的ID

    要下载的资源ID

    [3] 下载的后台实现

    1. 创建单元方法处理下载请求
    2. 根据请求获取要下载的资源的流对象
    3. 读取文件并将资源响应给浏览器

    [4] 下载的示例代码

    //声明单元方法:处理下载请求
    @RequestMapping("downFile")
    public void downFile(String filename, HttpServletResponse response, HttpServletRequest request) throws IOException {
        //设置下载资源的MIME类型?
        //设置响应头,告诉浏览器下载的资源需要存储到客户端的硬盘中,而不是解析打开。
        response.setHeader("Content-Disposition", "attachment;filename="+filename);
        //1.获取要下载的资源的流对象
            //获取文件的绝对路径
            String path=request.getServletContext().getRealPath("/upload");
            //获取文件的二进制数据
            byte[] bytes = FileUtils.readFileToByteArray(new File(path, filename));
        //2.响应浏览器
            //获取输出流对象
            ServletOutputStream outputStream = response.getOutputStream();
            //响应资源
            outputStream.write(bytes);
    }
    

      

  • 相关阅读:
    redis状态与性能监控
    redis-stat 安装
    Redis-stat is not found
    查看Redis信息和状态
    查看、分析memcached使用状态
    Memcache内存分配策略
    memcached server LRU 深入分析
    Memcached常用命令及使用说明
    Web-超大文件上传-如何上传文件-大文件上传
    PHP-超大文件上传-如何上传文件-大文件上传
  • 原文地址:https://www.cnblogs.com/vincentmax/p/14314670.html
Copyright © 2020-2023  润新知