当前位置: 首页 > news >正文

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

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

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

接口部分

    @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);}}}

前端部分

    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.mrgr.cn/news/11326.html

相关文章:

  • iPhone 手机使用技巧:iPhone 数据恢复软件
  • C#面:ActionResult 和 ViewResult有什么不同?
  • 【游戏】直线运动方式总结
  • kube-proxy 和 Calico区别?
  • 茴香豆:企业级知识问答工具实践
  • C++设计模式1:单例模式(懒汉模式和饿汉模式,以及多线程问题处理)
  • 【Apache Doris】周FAQ集锦:第 19 期
  • MySQL 5.7.44版本的优化策略
  • 【Leetcode 2032 】 至少在两个数组中出现的值 —— 哈希表与按位运算符(最全的注解)
  • 设计模式——策略模式
  • windows docker部署sonar
  • 【Rust光年纪】探索Rust语言中的WebAssembly利器:核心功能、安装配置与API概览
  • Python编程实例-如何使用NumPy为数组添加填充
  • Docker!!!
  • C++第十三弹 -- STL之stack深度剖析与模拟实现
  • Oracle ASM密码文件/参数文件相关
  • 哈希表+树单节点(leetcode.690)
  • java 自定义线程池
  • Go 安全使用goroutine
  • 浪潮服务器主板集成RAID常见问题