【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>

文件预览效果

相关推荐
Mintopia1 分钟前
🌐 实时翻译 + AIGC:Web跨语言内容生成的技术闭环
前端·javascript·aigc
Cache技术分享1 分钟前
225. Java 集合 - List接口 —— 记住顺序的集合
前端·后端
前端开发爱好者1 分钟前
Vite+ 获得 1250万美元的 A 轮融资,生态加速!
前端·javascript
Larcher2 分钟前
JS 变量声明避坑指南:彻底搞懂 var/let/const 的 3 大核心区别与最佳实践
前端·javascript·node.js
拖拉斯旋风8 分钟前
0基础学习Openai之:通过Prompt生成你心中的那幅画🎨
javascript·openai
爱抽烟的大liu9 分钟前
iOS 进阶6-Voip通信
前端
boboj19 分钟前
Vue过渡至React的基础理解
前端·react.js
Zyx200710 分钟前
用 CSS 演绎浪漫:从零构建“亲吻动画”全流程解析
前端·css
llq_35013 分钟前
在 antd Table 中实现多行省略和 Tooltip
前端
优秀员工不受影响15 分钟前
如何使用 Volta
前端