广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Springboot如何通过流返回文件
  • 516
分享到

Springboot如何通过流返回文件

2024-04-02 19:04:59 516人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录如何通过流返回文件controller类如下工具类DownLoadUtils如下以流的方式直接返回如何通过流返回文件 本人的文件是放在resource/templates目录下,

如何通过流返回文件

本人的文件是放在resource/templates目录下,截图如下

controller类如下

    @GetMapping(value = "/downfile")
    public void download(httpservletResponse response) throws ioException {
        String fileName = "template.xlsx";
        // 设置信息给客户端不解析
        String type = new MimetypesFileTypeMap().getContentType(fileName);
        // 设置contenttype,即告诉客户端所发送的数据属于什么类型
        response.setHeader("Content-type",type);
        // 设置编码
        String code = new String(fileName.getBytes("utf-8"), "iso-8859-1");
        // 设置扩展头,当Content-Type 的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型。
        response.setHeader("Content-Disposition", "attachment;filename=" + code);
        response.setContentType("application/octet-stream;charset=ISO8859-1");
        response.addHeader("Pargam", "no-cache");
        response.addHeader("Cache-Control", "no-cache");
        DownLoadUtils.download(fileName, response);
    }

工具类DownLoadUtils如下

public class DownLoadUtils { 
    public static void download(String filename, HttpServletResponse res) throws IOException {
        // 发送给客户端的数据
        // 读取filename
        ClassPathResource classPathResource = new ClassPathResource("templates/"+filename);
        long length = classPathResource.getFile().length();
        res.addHeader("Content-Length",String.valueOf(length));
        OutputStream outputStream = res.getOutputStream();
        byte[] buff = new byte[1024];
        BufferedInputStream bis = null;
        InputStream inputStream =classPathResource.getInputStream();
        bis = new BufferedInputStream(inputStream);
        int i = bis.read(buff);
        while (i != -1) {
            outputStream.write(buff, 0, buff.length);
            outputStream.flush();
            i = bis.read(buff);
        }
        bis.close();
        outputStream.close();
    }
}

注意点

response.addHeader("Content-Length",String.valueOf(file.length()));

如果不加这句代码,下载下来的文件会 在打开前提示修复,文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配

以流的方式直接返回

import java.io.FileReader;
import java.io.InputStream;
import java.util.Properties;

public class Reflect {
    public static void main(String[] args) throws Exception{
       //获取一个文件的绝对路径!!!
        // 这种是先获得绝对路径然后在转换成流。
//        String path = Thread.currentThread().getContextClassLoader()
//                .getResource("classinfo2.properties").getPath();
//        FileReader reader = new FileReader(path);
        //下面这种是直接用流的方式返回。
        InputStream reader = Thread.currentThread().getContextClassLoader()
                .getResourceAsStream("classinfo2.properties");
        Properties pro = new Properties();
        pro.load(reader);
        reader.close();
        //通过key获取value。
        String className = pro.getProperty("className");
        System.out.println(className);
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。 

--结束END--

本文标题: Springboot如何通过流返回文件

本文链接: https://www.lsjlt.com/news/142954.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Springboot如何通过流返回文件
    目录如何通过流返回文件controller类如下工具类DownLoadUtils如下以流的方式直接返回如何通过流返回文件 本人的文件是放在resource/templates目录下,...
    99+
    2022-11-13
  • Java通过接口返回文件流
    在返回接口的,如果包含文件,一般有两种返回方式:     1.返回文件在服务器中的地址     2.读取文件在服务器中的地址,并将文件以流的方式返回 对于第一种方式,返回文件在服务器中的真实地址,...
    99+
    2023-09-12
    java
  • springboot实现返回文件流
    目录springboot返回文件流springboot返回二进制文件流springboot返回文件流 @GetMapping(value = "/file/{fileName}") ...
    99+
    2022-11-13
  • mybatis 如何通过resultMap 返回long
    mybatis resultMap 返回long <resultMap id="ResultOfLong" type="java.lang.Long"> ...
    99+
    2022-11-12
  • java如何通过https返回数据
    在java中利用https返回json数据,具体方法如下:public static JSONObject httpsRequest(String requestUrl, String requestMethod, String outpu...
    99+
    2022-10-11
  • springboot如何获取文件流
    目录springboot获取文件流前端获取springboot返回的文件流的踩坑踩过坑的我给您提供一个答案两种解决方案springboot获取文件流 在日常开发中,经常会获取项目的相...
    99+
    2022-11-13
  • springboot如何通过@PropertySource加载自定义yml文件
    目录@PropertySource加载自定义yml文件@PropertySource注解对于yml的支持@PropertySource加载自定义yml文件 使用@PropertySo...
    99+
    2022-11-13
  • java如何通过字符缓冲流拷贝文件
    这篇文章主要介绍java如何通过字符缓冲流拷贝文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!通过字符缓冲流拷贝文件字符缓冲流只能读取文本文件   public static...
    99+
    2023-06-17
  • java如何通过字符流实现文件拷贝
    这篇文章将为大家详细讲解有关java如何通过字符流实现文件拷贝,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。通过字符流实现文件拷贝使用字符流只能拷贝文本文件    ...
    99+
    2023-06-17
  • C语言中如何通过指针参数返回值
    目录简单的案例深夜无聊而引发的问题回归正题简单的案例2.0链表中"迷人"的指针再度分析总结简单的案例 深夜无聊而引发的问题 一般来说,在C语言中一个函数顶多只能返...
    99+
    2023-02-24
    C语言指针 C语言参数返回值 C语言参数
  • SpringBoot如何通过配置文件(yml,properties)限制文件上传大小
    目录通过配置文件(yml,properties)限制文件上传大小properties类型配置文件设置yml类型配置文件设置设置文件上传大小限制--默认为1M解决方法通过配置文件(ym...
    99+
    2022-11-13
  • 后端接口返回文件流格式、前端如何实现文件下载导出呢?
    在项目开发过程中,难免会需要实现文件下载功能,记录下自己实际开发过程过程中遇到两种实现的方式。一种:后端直接返回加密url ,前端解密后直接使用 a标签下载就可以,这种方法相等比较简单,另一种:后端接...
    99+
    2023-09-02
    前端 java javascript
  • 通过FeignClient如何获取文件流steam is close问题
    目录FeignClient获取文件流 steam is close问题原因解决办法FeignClient注解参数日志级别配置服务超时、重试、降级和熔断FeignClient获取文件流...
    99+
    2022-11-13
  • java如何通过字节流实现文件的拷贝
    小编给大家分享一下java如何通过字节流实现文件的拷贝,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!通过字节流实现文件的拷贝   p...
    99+
    2023-06-17
  • 如何通过JS/CSS实现网页返回顶部效果
    这篇文章给大家分享的是有关如何通过JS/CSS实现网页返回顶部效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。CSS 按钮样式:#myBtn {display: none; p...
    99+
    2022-10-19
  • 后端如何返回一个(图片)文件流,并在前端vue展示。
    后端部分可分为三步: 1,获取文件参数(非必须,根据自己情况添加) 2,获取文件 3,以流形式返回 具体代码如下: @GetMapping("/getFileByUrl")@ApiOperationS...
    99+
    2023-09-14
    前端 vue.js java
  • java如何通过FileOutputStream字节流向文件中写数据
    目录通过FileOutputStream字节流向文件中写数据java 字节流向文件中写入指定内容字符流 就像这样字符流则是总结通过FileOutputStream字节流向文件中写数据...
    99+
    2022-12-26
    java FileOutputStream FileOutputStream字节流 字节流向文件写数据
  • java如何通过字节缓冲流实现文件拷贝
    小编给大家分享一下java如何通过字节缓冲流实现文件拷贝,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!通过字节缓冲流实现文件拷贝  publi...
    99+
    2023-06-17
  • Springboot如何通过lucene实现全文检索
    本篇内容主要讲解“Springboot如何通过lucene实现全文检索”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot如何通过lucene实现全文检索”吧!Lucene提供了一...
    99+
    2023-07-02
  • SpringBoot如何使用RateLimiter通过AOP方式进行限流
    目录使用RateLimiter通过AOP方式进行限流1、引入依赖2、自定义注解3、AOP实现类4、使用SpringBoot之限流限流的基础算法Guava RateLimiter其他使...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作