Java把文件链接转成流,返回给前端下载

devtools/2024/11/13 15:33:46/

背景:已知Java拿到了一个PDF链接(http://xxx.xxx.pdf),直接把链接返给前端的话,前端是不能点击直接下载的,需要后端先把url转成文件流,再由前端下载,处理如下:
导入pom

        <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.24</version></dependency>

接口部分

java">    @GetMapping("/downloadPdf")public void downloadPdf(@RequestParam String patentId, HttpServletResponse response) throws IOException {String pdfLink = "http://xxx.xxx.pdf";URL url = new URL(pdfLink);try (InputStream inputStream = url.openStream();PDDocument document = PDDocument.load(inputStream)) {// 设置响应头response.setContentType("application/pdf");response.setHeader("Content-Disposition", "attachment;");// 写入响应流try (OutputStream outputStream = response.getOutputStream()) {document.save(outputStream);}}}

前端部分

javascript">    downloadPDF() {let url = baseURL + "/xxx/xxx/downloadPdf?patentId=" + this.patent_id; // 对应后端接口console.log(url);axios({method: 'get',url: url,responseType: 'blob',	// 不加的话会白页headers: {'Authorization': 'Bearer ' + getToken()}}).then(response => {const blob = new Blob([response.data]);const url = URL.createObjectURL(blob);const link = document.createElement('a');link.href = url;link.download = `xxx.pdf`;	// 下载的文件名字link.click();});}

这样前端一点击,就能直接下载


http://www.ppmy.cn/devtools/100770.html

相关文章

Graylog日志丢失解决方案

问题描述 目前公司使用的日志方案是Graylog5.0版本&#xff0c;当接入的日志并发多时&#xff0c;就会出现日志丢失的情况。 目前硬件系统centos7.9 内核5.16.13。一台graylog和一台es服务器。 两台机器硬件配置 graylog CPU 36C 内存 150G 系统硬盘 500G &#xff08;固态&…

独立开发者系列(44)——PHP的CLI运行模式

所有的编程语言&#xff0c;最开始&#xff0c;测试执行的方式&#xff0c;都是写好xx.xx后缀是各种语言标记&#xff0c;然后使用解释器直接执行&#xff0c;就可以看到hello world。这种执行模式被称之为CLI模式&#xff0c;无需依赖服务器&#xff0c;可以直接跑&#xff0c…

零基础5分钟上手亚马逊云科技-利用MQ为应用解耦

简介&#xff1a; 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列&#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者&#xff0c;通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我会每天介绍一个基于亚马逊云科技…

软件运维实施维保方案(Doc完整版原件)

1.项目情况 2.服务简述 2.1服务内容 2.2服务方式 2.3服务要求 2.4服务流程 2.5工作流程 2.6业务关系 2.7培训 3.资源提供 3.1项目组成员 3.2服务保障 软件全套资料部分文档清单&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产…

大数据技术之Flume 企业开发案例——负载均衡和故障转移(6)

目录 负载均衡和故障转移 1&#xff09;案例需求 2&#xff09;需求分析 3&#xff09;实现步骤 负载均衡和故障转移 1&#xff09;案例需求 使用 Flume1 监控一个端口&#xff0c;其 sink 组中的 sink 分别对接 Flume2 和 Flume3&#xff0c;采用 FailoverSinkProcessor…

Linux--汇编语法配置初始化的原理

------改编自正点原子Linux开发手册 我们在学习 STM32 的时候几乎没有用到过汇编&#xff0c;可能在学习 UCOS 、 FreeRTOS 等 RTOS 类操作系统移植的时候可能会接触到一点汇编。但是我们在进行嵌入式 Linux 开发的时候是绝 对要掌握基本的 ARM 汇编&#xff0c;因为…

前端常见问题

一、<!DOCTYPE html>作用 <!DOCTYPE>是html文档的第一行&#xff0c;用于声明文档的类型&#xff0c;它会告诉浏览器要用哪一种HTML规范来渲染文档&#xff0c;确保正确渲染页面。 二、src与 href 的区别 &#xff08;一&#xff09;、请求资源类型的不同 在请…

4820道西医综合真题西医真题ACCESS\EXCEL数据库

本题库内容源自某出版物《西医综合真题考点还原与答案解析》&#xff0c;包含4千多道真题。这个数据库包含3个表&#xff0c;一个是分类表&#xff08;SECTION_BEAN&#xff09;&#xff0c;一个是题库主表&#xff08;QUESTION_INFO_BEAN&#xff09;&#xff0c;一个是选项表…