首页 > 其他分享 >spring boot中文件下载方法

spring boot中文件下载方法

时间:2023-05-10 15:01:39浏览次数:49  
标签:file spring boot downloadFile headers ResponseEntity new txt 下载

 

1、返回文件作为响应体,使用ResponseEntity类:

@GetMapping("/downloadFile")
public ResponseEntity<byte[]> downloadFile() throws IOException {
    // 读取文件内容到字节数组
    byte[] fileContent = Files.readAllBytes(Paths.get("path/to/file.txt"));

    // 设置响应头,指定文件名
    HttpHeaders headers = new HttpHeaders();
    headers.setContentDisposition(ContentDisposition.attachment().filename("file.txt").build());

    // 返回文件内容和响应头
    return ResponseEntity.ok().headers(headers).body(fileContent);
}

 2、返回文件作为响应体,使用StreamingResponseBody接口:

@GetMapping("/downloadFile")
public void downloadFile(HttpServletResponse response) throws IOException {
    // 设置响应头,指定文件名
    response.setHeader("Content-Disposition", "attachment; filename=file.txt");

    // 获取文件输入流
    InputStream inputStream = new FileInputStream("path/to/file.txt");

    // 创建StreamingResponseBody对象,将文件内容写入响应输出流
    StreamingResponseBody responseBody = outputStream -> {
        byte[] buffer = new byte[1024];
        int bytesRead;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }
        inputStream.close();
    };

    // 返回StreamingResponseBody对象
    response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
    responseBody.writeTo(response.getOutputStream());
}

 3、返回文件下载,使用ResponseEntity类:

@GetMapping("/downloadFile")
public ResponseEntity<Resource> downloadFile() {
    // 创建Resource对象,表示文件路径
    Resource fileResource = new FileSystemResource("path/to/file.txt");

    // 设置响应头,指定文件名
    HttpHeaders headers = new HttpHeaders();
    headers.setContentDisposition(ContentDisposition.attachment().filename("file.txt").build());

    // 返回文件资源和响应头
    return ResponseEntity.ok().headers(headers).body(fileResource);
}

 4、返回文件流,使用InputStreamResource类:

@GetMapping("/downloadFile")
public ResponseEntity<InputStreamResource> downloadFile() throws FileNotFoundException {
    // 创建文件输入流
    FileInputStream fileInputStream = new FileInputStream("path/to/file.txt");

    // 创建InputStreamResource对象,封装文件输入流
    InputStreamResource resource = new InputStreamResource(fileInputStream);

    // 设置响应头,指定文件名
    HttpHeaders headers = new HttpHeaders();
    headers.setContentDisposition(ContentDisposition.attachment().filename("file.txt").build());

    // 返回InputStreamResource对象和响应头
    return ResponseEntity.ok().headers(headers).body(resource);
}

  

标签:file,spring,boot,downloadFile,headers,ResponseEntity,new,txt,下载
From: https://www.cnblogs.com/shining-feifan/p/17387982.html

相关文章

  • spring 测试框架与维护项目结合问题
    之前项目中一直用junit进行单元测试,使用的版本一直是junit4.3版本(在junit库中,应该是自己定义的库)。由于springtest需要junit4.4,所以在工程的classpath中添加了junit4.4,运行时,报如下错误:Cannotfindtheclassfilefororg.junit.internal.runners.JUnit4ClassRunner。需要去除......
  • spring 2.5 TestContext 测试框架
    大多同事都已经养成用junit写单元测试的习惯,但junit在测试spring时,存在一些不足!1.  Spring容器多次初始化问题根据JUnit测试用例的调用流程,每执行一个测试方法都会重新创建一个测试用例实例并调用其setUp()方法。由于在一般情况下,我们都在setUp()方法中初始化Spring......
  • spring2.5 引入资源文件的方式
     以前项目中引入数据库连接相关的字符串都是使用<beanid="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <propertyname="locations"> <list> <value>classpath:fram......
  • SpringSecurity实战(二)-基于数据库认证
    pom依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId&......
  • AOSP下载编译
    平台:Ubuntu22.04Desktop文件:AOSP(清华源/中科大源)AOSP,全称"AndroidOpenSourceProject",中文意为"Android开放源代码项目"。发起者是谷歌,主要用途是移动设备的系统。这里通过清华源下载Android代码。1.安装依赖$sudoaptinstallbuild-essentialbcflexbisongawk......
  • 修改下载地址路径
    fromselenium.webdriver.chrome.optionsimportOptionschrome_options=Options()    prefs={"download.default_directory":'{}'.format('下载地址')} #下载路径为D:\电子保单下载    chrome_options.add_experimental_option(&quo......
  • SpringBoot定义优雅全局统一Restful API 响应框架四
    如果没有看前面几篇文章请先看前面几篇SpringBoot定义优雅全局统一RestfulAPI响应框架SpringBoot定义优雅全局统一RestfulAPI响应框架二SpringBoot定义优雅全局统一RestfulAPI响应框架三目前我们好像似乎解决所有问题,达到了我们理想的效果如下但是在业务错误返回时候......
  • Spring18_SpringMVC的组件解析3
    一、SpringMVC的执行流程1. 用户发送请求至前端控制器DispatcherServlet。2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。3.处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给Dis......
  • Google Chrome浏览器离线安装包下载方式
    GoogleChrome是应用很广泛的浏览器,默认是在线安装模式。如果网络速度很慢,或者没有网络的时候,就需要离线安装包了。32位Chrome离线包下载:http://www.google.cn/chrome/browser/desktop/index.html?standalone=164位Chrome离线包下载:http://www.google.cn/chrome/brow......
  • spring框架_ApplicationContext实现
    ApplicationContext实现ApplicationContext有四个经典实现ClassPathXmlApplicationContext:经典容器,基于classpath下xml格式的配置文件来创建FileSystemXmlApplicationContext:基于磁盘路径下xml格式的配置文件前两种实现都是用来帮助beanfactory读取bean的都是读取XML......