首页 > 其他分享 >vue 打开浏览器新标签页预览 pdf 和 txt 文档,以及新标签页标题修改

vue 打开浏览器新标签页预览 pdf 和 txt 文档,以及新标签页标题修改

时间:2023-07-12 16:12:50浏览次数:39  
标签:vue const 标签 fileExt blob download txt page result

 1 // 在线查看
 2     showOnline({ id, fileExt, fileName }) {
 3       if (fileExt && ['jpg', 'jpeg', 'gif', 'bmp', 'png'].includes(fileExt.toLowerCase())) {
 4         download(`/file-item/${id}/download`)
 5           .then(result => {
 6             const blob = new Blob([result.data], { type: 'application/x-msdownload' })
 7             this.imageUrl = URL.createObjectURL(blob)
 8           })
 9         this.dialogVisible = true
10       } else if (fileExt && fileExt.toLowerCase() === 'pdf') {
11         download(`/file-item/${id}/download`)
12           .then(result => {
13             const blob = new Blob([result.data], { type: 'application/pdf' })
14             const url = URL.createObjectURL(blob)
15             const page = window.open(url, '_blank')
16             setTimeout(function() { page.document.title = fileName }, 100)
17           })
18       } else if (fileExt && fileExt.toLowerCase() === 'txt') {
19         download(`/file-item/${id}/download`)
20           .then(result => {
21             // 注意type,不同类型文件,type不同;另外text 第一个参数的数组第一项加'\ufeff',设置编码,解决中文乱码
22             const blob = new Blob(['\ufeff', result.data], { type: 'text/plain' })
23             const url = URL.createObjectURL(blob)
24             const page = window.open(url, '_blank')
25             // page.document.title = '新的标题名'
26             // 因为window.open 异步,上面的方法很多时候不起效,加延时
27             setTimeout(function() { page.document.title = fileName }, 100)
28           })
29       } else {
30         this.$utils.message('info', '此类型文件不支持预览,请下载查看!')
31       }
32     }

主要就是用window.open()方法,注意事项都在上面代码中

参考文章:

https://www.cnblogs.com/cbxg24543/p/15589287.html

https://juejin.cn/post/7024133497958694925

https://www.cnblogs.com/weiliang-song/p/16085957.html

标签:vue,const,标签,fileExt,blob,download,txt,page,result
From: https://www.cnblogs.com/dirgo/p/17547751.html

相关文章

  • Vue3+.net6.0 六 条件渲染
    v-if,v-else-if,v-else控制元素是否渲染,不满足条件的时候不会有相应元素。<divv-if="type==='A'">A</div><divv-else-if="type==='B'">B</div><divv-else-if="type==='C'">C&l......
  • vue3自定义指令 拖拽 与拖拽变大小
    directives:{drag:{mounted:(el,binding)=>{constdragDom=el;conststy=dragDom.currentStyle||window.getComputedStyle(dragDom,null);el.parentElement.style.cursor='move';......
  • Vue3+.net6.0 五 类和样式绑定
    Vue3关于样式的处理跟Vue2是一样的,常用的有以下几种。1.绑定属性html部分:<div:class="{active:isActive}"></div>js部分:data(){return{isActive:true}}当isActive值为true时,div应用这个active样式,反之亦然。 2.对象方式绑定<div:class="cla......
  • 19:vue3 依赖注入
    1、通过Prop逐级透传问题(传统老的方法只能逐级传递) 传统方式代码如下:App.vue1<template>2<h3>祖宗</h3>3<Parent:msg="msg"></Parent>4</template>56<script>7importParentfrom"./components/Parent.vue"......
  • 二维码简易实现 Vue+Springboot
    Vue:<template><div><img:src="database64"width="150px"/><div>注:请使用手机微信扫码,并于2分钟内绑定员工账号(二维码为账号独属,请勿分享)。</div></div></template><script>import{getQrCode}from"......
  • vue 批量下载通用方法【转载】
    自己做项目的时候遇到需要批量下载文件的需求,于是下意识就用了循环url地址数组创建a标签下载的方法,但浏览器有限制,超过10个文件将不能下载,最多下载10个。于是找遍网上文章,终于找到了适用的。在这记录一下,分享给需要的人首先需要用到两个插件file-saver和jszip在需要批量下载......
  • 多个vue-cli版本共存
    1.安装指定版本 2.改名 3.配置环境变量 ......
  • nginx部署vue网站
    1.背景        最近gpt很火,于是尝试用gpt来进行古诗词取名,做了一个vue的网站进行展示,第一次部署,踩了一些坑。2.实施nodejs安装:在任意目录执行如下命令进行安装包下载:wgethttps://npm.taobao.org/mirrors/node/v14.17.6/node-v14.17.6-linux-x64.tar.gz解压 tar......
  • 2023-07-12 vue this.$set设置子组件内的值无效(uniapp+vue)
    前言:怎么说呢,子组件内嵌套了多层对象和数组,业务逻辑也是在子组件内处理,如何修改多层嵌套的对象数组的值?vue提供了一个this.$set方法去改变对应的值,实测在uniapp打包的微信小程序中无法使用该方法,而在Android端则可以,那有没有两全其美的方法?答案是有,在修改深层次的值时可以通过先......
  • linux 中sed命令的标签和跳转功能
     001、[root@PC1test02]#lsa.txt[root@PC1test02]#cata.txt##测试数据01020304050607080910[root@PC1test02]#sed':a;N;s/\n//;ta'a.txt##将多行数据转换为一行数据01020304050607080910 命令解释: sed默认只按行......