java将文件转成流文件返回给前端

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

1.待转换的文件

一、路径

二、文件内容

2.controller中代码

java 复制代码
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中代码

java 复制代码
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.实现类代码

java 复制代码
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.浏览器中访问结果示例

相关推荐
山甫aa2 分钟前
锁一篇搞定:乐观锁、悲观锁、CAS、数据库锁与分布式锁【从零开始的 Web 后端学习】
java·数据库·分布式·后端·学习·web
软件技术NINI4 分钟前
基于SpringBoot和Vue的博物馆预约平台管理系统的设计与实现
java·毕业设计·毕设
2601_9687931428 分钟前
Python Requests 轻量自动化:无需浏览器,实现真人级账号浏览模拟
开发语言·python·自动化
eggwyw1 小时前
关于C++为什么不加入垃圾回收机制解析
开发语言·c++
独泪了无痕10 小时前
探索Pinyin4j-Java中的拼音转换利器
java·后端
道尔柯南11 小时前
C++ string 类详解:从常用接口到深拷贝,彻底掌握字符串处理
android·java·c++
来让爷抱一个12 小时前
Python 异步里混用同步库,事件循环被卡住的全过程
开发语言·python
kingx312 小时前
Bugku 3122 谷歌小恐龙题解:纯离线逆向 Vault 的 AES-GCM 加密资源(附 Python 解密器)
java·逆向·ctf·bugku·aes-gcm
DevOpenClub14 小时前
职教高考控制线 API:招生类别枚举、筛选与空分数含义
java·数据库·高考
心祭丫丫15 小时前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习