您的位置:首页 > 财经 > 金融 > 分类信息网站营销_二级造价工程师_推广营销app_青岛网络推广公司

分类信息网站营销_二级造价工程师_推广营销app_青岛网络推广公司

2024/12/23 5:59:33 来源:https://blog.csdn.net/qq_40896145/article/details/143975394  浏览:    关键词:分类信息网站营销_二级造价工程师_推广营销app_青岛网络推广公司
分类信息网站营销_二级造价工程师_推广营销app_青岛网络推广公司

需求

后端接口返回pdf文件流,实现新窗口预览pdf。

解决方案

把后端返回的pdf文件流转为blob路径,利用浏览器直接预览。

具体实现步骤

1、引入axios

import axios from 'axios';

2、创建预览方法(具体使用时将axios的请求路径替换为你的后端下载地址)

export async function previewFile(data: IAttachment, callback?: () => void) {try {const response = await axios.get(config.VITE_APP_API_URL_PREPROD + '/file/downloadFile', {params: {filepath: data.filePath},responseType: 'blob'});let pdfUrl = window.URL.createObjectURL(new Blob([response.data], { type: "application/pdf" }));window.open(pdfUrl, "_blank");const newWindow = window.open(pdfUrl, '_blank');if (newWindow) {newWindow.onload = () => {newWindow.focus();};} else {// 如果新窗口被阻止,提示用户ElMessage.warning($t('请允许弹出窗口以预览文件'));}} catch (error) {console.error('Error preview file:', error);}
}

3、在你所需要的地方调用previewFile方法

import { previewFile } from "@/utils";
<el-button type="primary" @click="previewFile(file)">导出已选</el-button>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com