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

移动端预览指定链接的pdf文件流

场景

直接展示外部系统返回的获取文件流时出现了跨域问题:
在这里插入图片描述

解决办法

1. 外部系统返回的请求头中调整(但是其他系统不会给你改的)

在这里插入图片描述

2. 我们系统后台获取文件流并转为新的文件流提供给前端

/** 获取传入url文件流 */
@GetMapping("/getFileStream")
public ResponseEntity<org.springframework.core.io.Resource> getFileStream(@RequestParam("url") String url,@RequestParam(value = "download", required = false) boolean download)throws UnsupportedEncodingException, BusinessException {// 返回流ByteArrayOutputStream outputStream = OkHttpClientUtil.get(url);if (null == outputStream) {throw new BusinessException("文件流为空", ServiceResponseStatus.SERVICE_ERROR);}String baseName = FilenameUtils.getBaseName(url);String extension = FilenameUtils.getExtension(url);String filename =URLEncoder.encode(baseName, "UTF-8") + FilenameUtils.EXTENSION_SEPARATOR + extension;MediaType mediaType = MediaType.APPLICATION_OCTET_STREAM;if (FxCommFileType.PDF.getSuffix().toLowerCase().equals(extension)) {mediaType = MediaType.APPLICATION_PDF;}StringBuilder headerValues = new StringBuilder();if (download) {headerValues.append("attachment;");}headerValues.append("filename=").append(filename);return ResponseEntity.ok().contentType(mediaType).header(HttpHeaders.CONTENT_DISPOSITION, headerValues.toString()).body(new ByteArrayResource(outputStream.toByteArray()));
}
http://www.lryc.cn/news/125338.html

相关文章:

  • 【Go 基础篇】Go语言字符类型:解析字符的本质与应用
  • Java基础(十二)面向对象编程 OOP
  • 在阿里云服务器上安装Microsoft SharePoint 2016流程
  • Ubuntu设置定时重启
  • sqlloader学习笔记
  • 内网ip与外网ip
  • 分布式 - 消息队列Kafka:Kafka消费者和消费者组
  • feign调用和被调用者字段名称不对应解决
  • 【UE4 RTS】07-Camera Boundaries
  • 大语言模型之二 GPT发展史简介
  • 前后端分离------后端创建笔记(09)密码加密网络安全
  • 《Effects of Graph Convolutions in Multi-layer Networks》阅读笔记
  • 低代码助力传统制造业数字化转型策略
  • 什么叫做云计算
  • springboot 使用zookeeper实现分布式队列
  • 地理数据的双重呈现:GIS与数据可视化
  • Android 13 Media框架(3)- MediaPlayer生命周期
  • [oneAPI] BERT
  • F1-score解析
  • windows11下配置vscode中c/c++环境
  • Max Sum
  • Field injection is not recommended
  • C#字符串占位符替换
  • ChatGPT等人工智能编写文章的内容今后将成为常态
  • 【Sklearn】基于梯度提升树算法的数据分类预测(Excel可直接替换数据)
  • 什么叫做云计算?
  • 深度学习Batch Normalization
  • el-table实现懒加载(el-table-infinite-scroll)
  • vueRouter回顾
  • 大规模无人机集群算法flocking(蜂群)