使用 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);
        }
    }
目录
相关文章
|
Android开发
超级简单的安卓图片下载
超级简单的安卓图片下载
67 0
|
机器人 Python
在阿里云RPA中,获取下载的文件
在阿里云RPA中,获取下载的文件
382 2
|
编解码 Java 应用服务中间件
文件的上传和下载
文件的上传和下载
103 0
|
Web App开发 存储 Java
day18_文件的上传和下载学习笔记
一、文件的上传和下载 1、文件上传的原理分析 什么是文件上传?    要将客户端(浏览器)数据存储到服务器端,而不将数据直接存储到数据库中,而是要将数据存储到服务器所在的磁盘上,这就要使用文件上传。
1248 0
|
存储 Apache 安全
文件的上传和下载学习小结
文件的上传和下载学习小结 一、文件上传 客户端通过浏览器将文件上传至服务器。 对于我们写代码来说,就是IO操作。 二、实现文件上传 对表单有什么要求? 1. 提交方式必须为post 2. enctype="multipart/form-data" 3. 对于服务器的servlet有什么要求? request.getParameter("name"); 不能用该方式获取表单数据了,若非要用,则返回null。
1255 0
|
Android开发
下载
下载 MultiThreadDownload (使用的App有:薄荷) FileDownloader (Android 文件下载引擎,稳定、高效、灵活、简单易用) RxDownload (基于RxJava和Retrofit打造的下载工具, 支持多线程下载和断点续传, 智能判断是否支持断点续传等功能) file-downloader (安卓上轻量级Http/Https文件下载框架,我的目标是让安卓文件下载越简单越好,尽可能以最简洁明了的方式完成复杂需求。
1228 0
|
Python 容器
使用 you-get 下载视频
安装you-get 最近刚刚看完了Python的官方教程,准备研究一下Python的第三方库。想起来以前看到过一个很不错的视频下载工具you-get,今天正好来研究一下。
1186 0

热门文章

最新文章