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

文件预览效果

相关推荐
风止何安啊11 分钟前
从 “牵线木偶” 到 “独立个体”:JS 拷贝的爱恨情仇(浅拷贝 VS 深拷贝)
前端·javascript·面试
漫天黄叶远飞13 分钟前
地址与地基:在 JavaScript 的堆栈迷宫里,重新理解“复制”的哲学
前端·javascript·面试
小书包酱17 分钟前
告别在 vue 中使用公共 less 文件没有提示信息的烦恼
css·vue.js·less
杨啸_新房客18 分钟前
如何优雅的设置公司的NPM源
前端·npm
ohyeah18 分钟前
深入理解 JavaScript 中的继承与 instanceof 原理
前端·javascript
linhuai19 分钟前
flutter如何实现有登陆权限管理
前端
crary,记忆20 分钟前
React 之 useEffect
前端·javascript·学习·react.js
BD_Marathon28 分钟前
【JavaWeb】HTML常见标签——标题段落和换行
前端·html
小飞侠在吗31 分钟前
vue OptionsAPI与CompositionAPI
前端·javascript·vue.js
春卷同学43 分钟前
基于Electron开发的跨平台鸿蒙PC找不同游戏应用
javascript·游戏·electron