实现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文件以流的形式返回给前端,并在前端展示出来。希望这篇文章对你有所帮助,如果有任何疑问欢迎随时向我提问。祝你编程顺利!