使用 responseentity进行文件的下载

简介: 使用 responseentity进行文件的下载

文件的下载的功能是系统必不可少的功能,自己手写有些麻烦,这时候springMVC为我们提供一种简单的方式使用 responseentity 进行文件下载,具体代码如下:

// 根据文件id 进行文件的下载
 @RequestMapping("/downloadFile/{id}")
    public ResponseEntity<InputStreamResource> downFile(@PathVariable("id") String id) throws Exception{
      // 根据文件 id 从数据库中查询出文件的一些基本信息
        SysFileImportEntity sysFileImportEntity=sysFileImportService.selectById(id);
        if(sysFileImportEntity!=null){
          // 文件的原始名称
            String fileName=sysFileImportEntity.getOrginFileName();
            // 文件在服务器上存放的路径
            String filePath=sysFileImportEntity.getFilePath();
            File file = new File(filePath);
            InputStream inputStream = new FileInputStream(file);
            InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
            HttpHeaders headers = new HttpHeaders();
            if(sysFileImportEntity.getTemplateName().equals("solutionAudioUploadList")){
                headers.add("Accept-Ranges", "bytes");
            }
            headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
            headers.add("Content-Disposition", String.format("attachment; filename=\"%s\"", URLEncoder.encode(fileName,"UTF-8")));
            headers.add("Pragma", "no-cache");
            headers.add("Expires", "0");
            return ResponseEntity
                    .ok()
                    .headers(headers)
                    .contentLength(file.length())
                    .contentType(MediaType.parseMediaType("application/octet-stream"))
                    .body(inputStreamResource);
        }else {
            InputStream inputStream = new ByteArrayInputStream("<script language=\"javascript\">alert('文件不存在!');</script>".getBytes("GBK"));
            InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
            HttpHeaders headers = new HttpHeaders();
            headers.add(HttpHeaders.CONTENT_TYPE,"text/html;charset=UTF-8");
            headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
            headers.add("Pragma", "no-cache");
            headers.add("Expires", "0");
            return ResponseEntity
                    .ok()
                    .headers(headers)
                    .contentType(MediaType.TEXT_HTML)
                    .body(inputStreamResource);
        }
    }
目录
相关文章
|
机器人 Python
在阿里云RPA中,获取下载的文件
在阿里云RPA中,获取下载的文件
363 2
|
编解码 Java 应用服务中间件
文件的上传和下载
文件的上传和下载
93 0
|
前端开发
生成pdf文件并打包zip下载
使用itextpdf生成pdf文件,使用ant的org.apache.tools.zip生成zip包,并下载
188 0
|
前端开发 网络协议 API
大文件处理(上传,下载)思考
在计算文件hash的方式,主要有以下几种: 分片全量计算hash、抽样计算hash。在这两种方式上,分别又可以使用web-work和浏览器空闲(requestIdleCallback)来实现.
大文件处理(上传,下载)思考
|
Python
wxpython-通过request远程下载网络zip文件,并解压安装文件
1.通过wxpython,产生一个窗体,窗体上有一段[文字标签],一个[进度条],一个[开始按钮]。 2.点击【开始按钮】,下载网络资源文件http://example.cn/test.zip。进度条和文字标签同时显示百分比 3.下载完成后,解压到指定目录。如果指定目录下有文件,则覆盖掉。
428 0
wxpython-通过request远程下载网络zip文件,并解压安装文件
|
存储 Apache 安全
文件的上传和下载学习小结
文件的上传和下载学习小结 一、文件上传 客户端通过浏览器将文件上传至服务器。 对于我们写代码来说,就是IO操作。 二、实现文件上传 对表单有什么要求? 1. 提交方式必须为post 2. enctype="multipart/form-data" 3. 对于服务器的servlet有什么要求? request.getParameter("name"); 不能用该方式获取表单数据了,若非要用,则返回null。
1246 0
|
Web App开发 存储 Java
day18_文件的上传和下载学习笔记
一、文件的上传和下载 1、文件上传的原理分析 什么是文件上传?    要将客户端(浏览器)数据存储到服务器端,而不将数据直接存储到数据库中,而是要将数据存储到服务器所在的磁盘上,这就要使用文件上传。
1234 0
|
Android开发
下载
下载 MultiThreadDownload (使用的App有:薄荷) FileDownloader (Android 文件下载引擎,稳定、高效、灵活、简单易用) RxDownload (基于RxJava和Retrofit打造的下载工具, 支持多线程下载和断点续传, 智能判断是否支持断点续传等功能) file-downloader (安卓上轻量级Http/Https文件下载框架,我的目标是让安卓文件下载越简单越好,尽可能以最简洁明了的方式完成复杂需求。
1209 0
|
安全 Java
用proxyee-down快速下载百度网盘大文件
百度网盘下载大文件一直是一个痛点。现在国内基本上只有百度网盘可用了,但是免费用户使用百度网盘下载东西的速度一直不是很理想,所以现在有很多工具应运而生。今天要介绍的就是一个使用java编写的开源多线程下载器, 利用它,我们就可以满速下载百度云文件! 废话不多说,直接进入正题。
1604 0
|
Web App开发
用油猴下载百度网盘大文件
百度网盘下载大文件会自动调用百度网盘客户端来下载,但是客户端也无法做到满速下载。所以每次下载百度网盘的大文件的时候都是一件非常痛苦的事情。最近发现了一个非常好用的浏览器扩展——Tampermonkey,可以帮助我们下载百度网盘大文件。
3374 0