实现Java后端返回PDF文件流给前端

流程步骤

首先,我们来看一下整个流程的步骤:

步骤 描述
1 后端读取PDF文件
2 将PDF文件以流的形式返回给前端
3 前端接收PDF文件流并展示

代码实现

后端代码

// 引用形式的描述信息:读取PDF文件并以流的形式返回给前端
@GetMapping("/download/pdf")
public void downloadPdf(HttpServletResponse response) {
    try {
        // 读取PDF文件
        File file = new File("path/to/your/pdf/file.pdf");
        
        // 设置响应头
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "inline; filename=" + file.getName());
        
        // 以流的形式返回给前端
        FileInputStream fileInputStream = new FileInputStream(file);
        IOUtils.copy(fileInputStream, response.getOutputStream());
        response.flushBuffer();
        fileInputStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

前端代码

// 引用形式的描述信息:接收PDF文件流并展示
fetch('/download/pdf')
  .then(response => response.blob())
  .then(blob => {
    const url = window.URL.createObjectURL(new Blob([blob]));
    const a = document.createElement('a');
    a.href = url;
    a.download = 'file.pdf';
    a.click();
    window.URL.revokeObjectURL(url);
  });

序列图

sequenceDiagram
    participant Frontend
    participant Backend
    Frontend->>Backend: 请求下载PDF文件
    Backend->>Backend: 读取PDF文件
    Backend->>Frontend: 返回PDF文件流
    Frontend->>Frontend: 展示PDF文件

总结

通过以上步骤和代码实现,你可以成功将Java后端的PDF文件以流的形式返回给前端,并在前端展示出来。希望这篇文章对你有所帮助,如果有任何疑问欢迎随时向我提问。祝你编程顺利!