【Vue】后端返回文件流,前端预览文件

javascript 复制代码
let date;
        request({
          url: this.$route.query.url,
          method: 'get',
          responseType: 'blob',
        }).then(resp => {
          date = resp
          this.path = window.URL.createObjectURL(new Blob([resp], {type: "application/pdf"}))
        }).catch((e) => {
          //旧版本浏览器下的blob创建对象
          window.BlobBuilder = window.BlobBuilder ||
            window.WebKitBlobBuilder ||
            window.MozBlobBuilder ||
            window.MSBlobBuilder;
          if (e.name == 'TypeError' && window.BlobBuilder) {
            if (date) {
              BlobBuilder.append(date);
              this.path = URL.createObjectURL(new BlobBuilder().getBlob("application/pdf"))
            }
          } else {
            console.log("浏览器版本较低,暂不支持该文件类型预览");
          }
        }).finally(() => {
          window.URL.revokeObjectURL(this.path);
        })
复制代码
responseType必须设置为blob
html 复制代码
  <iframe style="width: 100%;height: 500px" :src="path"></iframe>

文件预览效果

相关推荐
用户11489669441052 分钟前
VUE3响应式原理——从零解析
vue.js
parade岁月2 分钟前
Tailwind CSS v4 — 当框架猜不透你的心思
前端·css
用户83040713057014 分钟前
SPA 首屏加载速度慢怎么解决?
vue.js·webpack
小明9134 分钟前
基于Rokid CXR-M SDK的AI饮食健康助手开发实战
前端
一枚前端小姐姐5 分钟前
低代码平台表单设计系统技术分析(实战三)
前端·vue.js·低代码
牛奶6 分钟前
ts随笔:面向对象与高级类型
前端·面试·typescript
牛奶7 分钟前
React 基础理论 & API 使用
前端·react.js·面试
大漠_w3cpluscom10 分钟前
别再死记CSS属性了!真正能让你少走半年弯路的,是这套思维
前端
兆子龙29 分钟前
用 React + Remotion 做视频:入门与 AI 驱动生成
前端·架构
SuperEugene34 分钟前
从 Vue2 到 Vue3:语法差异与迁移时最容易懵的点
前端·vue.js·面试