使用 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);
        }
    }
目录
相关文章
|
3月前
|
数据采集 数据安全/隐私保护
下载m3u8视频,以及整合
下载m3u8视频,以及整合
|
Android开发
超级简单的安卓图片下载
超级简单的安卓图片下载
60 0
|
机器人 Python
在阿里云RPA中,获取下载的文件
在阿里云RPA中,获取下载的文件
369 2
|
编解码 Java 应用服务中间件
文件的上传和下载
文件的上传和下载
97 0
|
前端开发
生成pdf文件并打包zip下载
使用itextpdf生成pdf文件,使用ant的org.apache.tools.zip生成zip包,并下载
206 0
|
存储 Apache 安全
文件的上传和下载学习小结
文件的上传和下载学习小结 一、文件上传 客户端通过浏览器将文件上传至服务器。 对于我们写代码来说,就是IO操作。 二、实现文件上传 对表单有什么要求? 1. 提交方式必须为post 2. enctype="multipart/form-data" 3. 对于服务器的servlet有什么要求? request.getParameter("name"); 不能用该方式获取表单数据了,若非要用,则返回null。
1250 0
|
Web App开发 存储 Java
day18_文件的上传和下载学习笔记
一、文件的上传和下载 1、文件上传的原理分析 什么是文件上传?    要将客户端(浏览器)数据存储到服务器端,而不将数据直接存储到数据库中,而是要将数据存储到服务器所在的磁盘上,这就要使用文件上传。
1239 0
|
开发工具 Windows 开发者
如何下载WDK
随着Windows Vista和Windows Server 2008的相继发布,微软的驱动开发工具也进行了相应的更新换代。原来的驱动开发工具包叫做DDK(Driver Develpment Kit),现在新版本的叫做WDK(Windows Driver Kit)。
1572 0