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

文件预览效果

相关推荐
自然 醒21 分钟前
如何实现el-select多选下拉框中嵌套复选框并加校验不为空功能呢?
前端·javascript·vue.js
成功之路必定艰辛44 分钟前
【Mars3D项目实战开发】vue3+vite搭建配置项3维地球
前端·vue3·mars3d
爱学习的小羊啊1 小时前
【前端】Vue3 父传子 Dialog 显示问题:解决方案与最佳实践
前端
余生H1 小时前
前端Python应用指南(八)WebSocket与实时应用:用Flask和Django实现聊天系统
前端·python·websocket·实时通讯
国服第二切图仔1 小时前
鸿蒙Next自定义相机开发时,如何解决相机在全屏预览的时候,画面会有变形和拉伸?
前端·javascript·harmonyos
it非鱼2 小时前
超详细!uni-app Android本地打包傻瓜式教程
前端
坐镇指挥2 小时前
vue组件设计
前端·javascript·vue.js
Mr。轩。2 小时前
【Vue】分享一个快速入门的前端框架以及如何搭建
前端·vue.js·前端框架
yzzzz2 小时前
JS 的蝴蝶效应 —— 事件流
前端·javascript·面试
计算机学姐2 小时前
基于Python的社交音乐分享平台
开发语言·vue.js·python·mysql·django·flask·pip