java将文件转成流文件返回给前端
创始人
2024-11-06 08:40:52

环境:jdk1.8,springboot2.5.3,项目端口号:9100

1.待转换的文件

一、路径

在这里插入图片描述

二、文件内容

在这里插入图片描述

2.controller中代码

package com.example.pdf.controller;  import com.example.pdf.service.GetFileStreamService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;  import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse;  /**  * @author   * @date 2024/3/29 16:28  * @describe  */ @RestController @RequestMapping(value = "test") public class GetFileStreamController {      @Resource     private GetFileStreamService getFileStreamService; 	 	/**      * 获取文件流      */     @GetMapping("getFileStream")     public void getFileStream(HttpServletResponse response) {         getFileStreamService.getFileStream(response);      }  }  

3.service中代码

package com.example.pdf.service;  import javax.servlet.http.HttpServletResponse;  /**  * @author   * @date 2024/3/29 16:30  * @describe  */ public interface GetFileStreamService {      /**      * 获取文件流      * @param response      */     void getFileStream(HttpServletResponse response); }  

4.实现类代码

package com.example.pdf.service.impl;  import com.example.pdf.service.GetFileStreamService; import org.springframework.stereotype.Service;  import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.OutputStream;  /**  * @author  * @date 2024/3/29 16:31  * @describe  */ @Service public class GetFileStreamServiceImpl implements GetFileStreamService {     /**      * 获取文件流      */     @Override     public void getFileStream(HttpServletResponse response) {         // 指定文件路径,获取file文件         File file = new File("E:\\Desktop\\temps\\test.pdf");         try {             // 将文件转为文件输入流             FileInputStream fileInputStream = new FileInputStream(file);             // 获取响应的输出流             OutputStream outputStream = response.getOutputStream();             // 将文件转成字节数组,再将数组写入响应的输出流             byte[] buffer = new byte[1024];             int bytesRead = -1;             while ((bytesRead = fileInputStream.read(buffer)) != -1) {                 outputStream.write(buffer, 0, bytesRead);             }             // 刷新输出流             outputStream.flush();             // 关闭流             fileInputStream.close();             outputStream.close();         } catch (Exception e) {             e.printStackTrace();         }     } }  

5.postman中访问结果示例

在这里插入图片描述

6.浏览器中访问结果示例

在这里插入图片描述

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...