将后端返回的网络url转成blob对象,实现pdf预览

调用e签宝返回的数据是网络链接就很让人头疼,最后想到可以转换成blob对象,便在百度上找到方法,记录一下。

祝大家节日快乐!!

代码在最后!!!!

代码在最后!!!!

代码在最后!!!!

代码在最后!!!!

**最后的预览页面还是使用pdfjs,可以看我之前写的文档就知道如何使用pdfjs啦!!**文末有链接

调用e签宝返回的数据

返回的数据是网络链接就很让人头疼,最后想到可以转换成blob对象,便在百度上找到方法,记录一下。

步骤展示

1.先组装数据,然后传递给转换为blob对象的方法

2. 初始化 axios 实例

重点设置 axios

responseType: 'blob',

withCredentials: false

初始化 axios 实例
缺一不可

3. 转换方法

复制即用

js 复制代码
//最后的预览页面还是使用pdfjs,可以看我之前写的文档就知道如何使用pdfjs啦!!
//链接:https://blog.csdn.net/qq_51463650/article/details/137716310?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522924ABB9F-E18A-4CC7-B015-61A74C042A0E%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=924ABB9F-E18A-4CC7-B015-61A74C042A0E&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-137716310-null-null.nonecase&utm_term=pdfjs&spm=1018.2226.3001.4450

//查看附件
const openPdfFun = (fileId) => {

//e签宝 查看附件接口
  authManageESignApi.findUpdateStatus(fileId).then(res => {

    if (!res.data.fileDownloadUrl) {
      showToast("预览失败")
    }

    let file = {
      id: res.data.fileId,
      name: res.data.fileName,
      filePath: res.data.fileDownloadUrl,
    }

    getFileData(file)


  }).catch(e => {
    showToast("预览失败")
  })

}



// 重点设置 axios
// responseType: 'blob',
// withCredentials: false
// 初始化 axios 实例
const ajaxDownloadFile = axios.create({
  baseURL: '',
  responseType: 'blob',
  withCredentials: false,
  headers: {
    'Content-Type': 'application/json; charset=UTF-8'
  }
});



// 请求方法
const getFileData = (file) => {

  return new Promise((resolve, reject) => {
    ajaxDownloadFile({
      url: file.filePath,
      method: 'get',
      params: {
        attname: file.fileName
      }
    }).then(res => {

      let pdfData = res.data;  //pdfData是后端返回的文件流
      pdfData.fileId = file.id
      pdfData.filename = file.name;

      let blob = new Blob([pdfData], {
        type: 'application/pdf;charset=UTF-8'
      })
      pdfData = window.URL.createObjectURL(blob) //创建预览路径
      let agreementUrl = encodeURIComponent(pdfData)

      router.push({path: '/filePreview', query: {url: agreementUrl, pdfData: pdfData}})


      // resolve(res);

    }).catch(error => {
      console.error(error);
      reject();
    });
  });
}

最后的预览页面还是使用pdfjs,可以看我之前写的文档就知道如何使用pdfjs啦!!

最后的预览页面还是使用pdfjs,可以看我之前写的文档就知道如何使用pdfjs啦!!链接:在这。

相关推荐
u0111026756 小时前
JPG、PNG、WebP 怎么选?按透明度、体积和使用场景做判断
前端·javascript·vue.js·图像处理·ai作画
jerrywus6 小时前
让 AI 写完代码后交一份报告:我改造了 answer-me-with-html
前端·claude·cursor
派小心.7 小时前
小程序分享链路中来源参数的传递校验
大数据·前端·数据库·人工智能·小程序·数据分析
hhb_6187 小时前
一键生成数据看板,ECharts实战演示
前端·javascript·echarts
Java后端的Ai之路7 小时前
08_React组件API
前端·react.js·前端框架
小马不起床7 小时前
零基础玩转 FastAPI_09:前端基础工程构建
前端·状态模式·fastapi
qiushijin968 小时前
【2026.12】日语能力考试N1、N2、N3、N4、N5历年真题及答案合集PDF(2010-2026年)
经验分享·pdf
const_qiu8 小时前
第一章 1.1-1.2:基础模型调用与 TypeScript 入门 —— Java 开发者的视角
java·javascript·typescript
风骏时光牛马9 小时前
用户管理模块接口开发
前端
彭亚川Allen9 小时前
从零手搓 RAG 之检索全流程,给大模型接上自己的知识库
前端·后端·ai编程