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

后端接口返回二进制文件,前端 window.opent预览展示

详细步骤

1.修改 PreviewApi 函数:

  • 设置 responseType 为 ‘arraybuffer’,以接收二进制数据。
export const PreviewApi = (data) => request({method: 'post',url: '/dev-api/preview',responseType: 'arraybuffer',data
});

3.处理响应:

  • 使用 new Uint8Array(response.data) 将 ArrayBuffer 转换为 Uint8Array。
  • 使用 Blob 构造函数将 Uint8Array 转换为 Blob 对象。
  • 使用 URL.createObjectURL 方法生成 Blob URL。
  • 使用 window.open 方法在新窗口中打开生成的 Blob URL。
<template><div><button @click="onPreview(row)">预览 PDF</button></div>
</template><script>
import { ldjtPreviewApi } from '@/api/your-api-file'; // 引入你的 API 文件export default {data() {return {row: { qqlsh: 'example_qqlsh' } // 示例数据,实际使用时从父组件或其他地方获取};},methods: {onPreview(row) {ldjtPreviewApi({ qqlsh: row.qqlsh }).then((response) => {if (response.status === 200) {const binaryData = new Uint8Array(response.data);const url = this.binaryToPdfUrl(binaryData);console.log('Generated URL:', url);window.open(url);} else {this.$message({message: '请求失败',type: 'error'});}}).catch((error) => {this.$message({message: error.message || '请求出错',type: 'error'});})},binaryToPdfUrl(binaryData) {const blob = new Blob([binaryData], { type: 'application/pdf' });const url = URL.createObjectURL(blob);return url;}}
};
</script><style scoped>
/* 你可以在这里添加一些样式 */
</style>

手动验证二进制数据

你可以将二进制数据保存为文件,手动打开验证 PDF 文件是否有效。以下是一个示例代码:

function binaryToPdfFile(binaryData, filename) {const blob = new Blob([binaryData], { type: 'application/pdf' });// 创建一个临时的下载链接const link = document.createElement('a');link.href = URL.createObjectURL(blob);link.download = filename;link.click();
}// 调用函数,将二进制数据保存为 PDF 文件
binaryToPdfFile(new Uint8Array(response.data), 'test.pdf');
http://www.lryc.cn/news/480602.html

相关文章:

  • 基于STM32的红外遥控接收器
  • K8S网络插件故障处理
  • 优化前端开发中的提示语设计基本原则
  • 飞凌嵌入式FET527N-C核心板现已适配Android 13
  • uniapp 如何修改 返回按钮(左上角+物理按钮+侧滑)触发的返回事件
  • appium启动 install driver安装驱动
  • 【机器学习】均方误差根(RMSE:Root Mean Squared Error)
  • [含文档+PPT+源码等]精品基于springboot实现的原生Andriod广告播放系统
  • 【机器学习】均方误差(MSE:Mean Squared Error)
  • 融合虚拟与现实,AR Engine为用户提供沉浸式交互体验
  • python | xmltodict,一个非常厉害的 关于XML数据 Python 库!
  • 教程:FFmpeg结合GPU实现720p至4K视频转换
  • MeterSphere接口自动化-ForEach循环
  • ssm074应急资源管理系统+jsp(论文+源码)_kaic
  • 怎么对 PDF 添加权限密码或者修改密码-免费软件分享
  • LVSM: A LARGE VIEW SYNTHESIS MODEL WITH MINIMAL 3D INDUCTIVE BIAS 论文解读
  • 7.《双指针篇》---⑦三数之和(中等偏难)
  • 鸿蒙ArkTS中的布局容器组件(Scroll、List、Tabs)
  • mybatis连接PGSQL中对于json和jsonb的处理
  • Redis 权限控制(ACL)|ACL 命令详解、ACL 持久化
  • 内网学习一:windows基础
  • 编译工具与文件学习(一)-YAML、repos、vcstoolcolcon
  • 使用 HuggingFace 提供的 Elasticsearch 托管交叉编码器进行重新排名
  • CKA认证 | Day1 k8s核心概念与集群搭建
  • [极客大挑战 2019]PHP 1
  • 【c++丨STL】vector模拟实现
  • SQLAlchemy 介绍与实践
  • docker进行SRS直播服务器搭建
  • windows server2019下载docker拉取redis等镜像并运行项目
  • 数据结构(8.7_2)——败者树