位置: IT常识 - 正文

Vue实现下载文件而非浏览器直接打开(vue中下载文件)

编辑:rootadmin
Vue实现下载文件而非浏览器直接打开 问题背景

推荐整理分享Vue实现下载文件而非浏览器直接打开(vue中下载文件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue下载文件到指定路径,vue实现下载文件进度条,vue实现下载文件进度条,vue 实现文件下载,vue下载文件到指定路径,vue实现下载文件进度条,vue实现下载文件IE浏览器会把路径弄进去嘛,vue实现下载文件到本地,内容如对您有帮助,希望把文章链接给更多的朋友!

对于一个txt文本、图片、视频、音频等浏览器可以直接使用浏览器进行预览的文件, 使用传统的a标签加download属性进行下载是行不通的,会在浏览器直接打开,因此需要搞一个新的方式进行下载。

实现流程实现思路

这里使用Vue自定义指令,对文件链接进行处理,将链接转化为blob进行下载,Vue2和Vue3在写法上有所区别。

定义指令

在src目录中,新建存放所有自定义指令的目录directive,然后新建vdown.js并编写指令:

Vue2写法:import Vue from "vue";Vue.directive('down', { inserted: (el, binding) => { el.addEventListener('click', () => { let link = document.createElement('a') let url = binding.value // 这里是将url转成blob地址, fetch(url).then(res => res.blob()).then(blob => { // 将链接地址字符内容转变成blob地址 link.href = URL.createObjectURL(blob) console.log(link.href) link.download = '' document.body.appendChild(link) link.click() }) }) }})Vue3写法:let vdown = { mounted: (el, binding) => { el.addEventListener('click', () => { console.log(binding.value) let link = document.createElement('a') let url = binding.value // 这里是将url转成blob地址, console.log(url) fetch(url).then(res => res.blob()).then(blob => { // 将链接地址字符内容转变成blob地址 link.href = URL.createObjectURL(blob) console.log(link.href) link.download = '' document.body.appendChild(link) link.click() }) }) }}export default vdownVue实现下载文件而非浏览器直接打开(vue中下载文件)

指令中使用fetch获取文件内容,并转换为blob,然后通过构造的A标签模拟点击进行下载。

注册指令

在Vue2写法中,已经使用Vue.directive注册了指令,所以直接在main中引入自定义指令的脚本文件即可:

...import '@/directive/vdonw'...

而在Vue3写法中,定义指令的脚本中只是定义了指令的内容而未注册,所以需要在main中进行注册:

Vue3写法:import { createApp } from 'vue'import App from './App.vue'var app = createApp(App)// 注册指令import vdown from '@/directive/vdown'app.directive('down', vdown)// 注册结束app.mount('#app')使用指令

在Vue文件中,直接定义下载按钮,添加v-down指令并传递要下载的URL,即可完成下载:

...<a v-down="'http://127.0.0.1:8888/file.txt'">下载文件</a>...跨域问题

若遇到跨域问题,配置proxy代理解决即可,在vue.config.js中添加如下内容:

module.exports = { devServer: { proxy: { '/serverfile': { target: 'http://www.xxx.com',//这里后台的地址模拟的;应该填写你们真实的后台接口 ws: true, changOrigin: true,//允许跨域 pathRewrite: { '^/serverfile': '/'//请求的时候使用这个api就可以 } } } }}

修改下载按钮中的连接:

...<a v-down="'/serverfile/file.txt'">下载文件</a>...

然后点击下载即可成功下载:

本文链接地址:https://www.jiuchutong.com/zhishi/290843.html 转载请保留说明!

上一篇:四川成都熊猫基地的小熊猫 (© Biosphoto/Alamy)(四川成都熊猫基地介绍)

下一篇:vue3.0本地引入vue.js(vue.min.js 本地引入)

  • 三星s10发热(三星s10发热屏幕失灵)

    三星s10发热(三星s10发热屏幕失灵)

  • 微信怎么变黑色主题(微信怎么变黑色主题安卓)

    微信怎么变黑色主题(微信怎么变黑色主题安卓)

  • iphonexr录屏模糊(iphone xr录屏很模糊是怎么回事)

    iphonexr录屏模糊(iphone xr录屏很模糊是怎么回事)

  • 微信拉黑删除对方后对方还能看到我吗(微信拉黑删除对方对方知道吗)

    微信拉黑删除对方后对方还能看到我吗(微信拉黑删除对方对方知道吗)

  • qq神秘字符是什么意思(qq神秘字符是什么)

    qq神秘字符是什么意思(qq神秘字符是什么)

  • 电脑qq录屏功能怎么用(电脑qq录屏功能在哪里)

    电脑qq录屏功能怎么用(电脑qq录屏功能在哪里)

  • 苹果8plus有128g吗(苹果8plus有128g的吗)

    苹果8plus有128g吗(苹果8plus有128g的吗)

  • 文字全选快捷键是什么(文字全选按什么键)

    文字全选快捷键是什么(文字全选按什么键)

  • 韩版note105g大陆能用吗(韩版note10 5g和国行区别)

    韩版note105g大陆能用吗(韩版note10 5g和国行区别)

  • 光纤网速慢的解决办法(光纤网速不好)

    光纤网速慢的解决办法(光纤网速不好)

  • 为啥苹果11手机充电很慢(为啥苹果11手机接不到电话)

    为啥苹果11手机充电很慢(为啥苹果11手机接不到电话)

  • 淘宝几天自动默认好评(淘宝几天后自动付款)

    淘宝几天自动默认好评(淘宝几天后自动付款)

  • 桌面出版系统最初是谁提出的(桌面出版系统最好的软件)

    桌面出版系统最初是谁提出的(桌面出版系统最好的软件)

  • 苹果xs可以升级5g吗(苹果xs可以升级ios16吗)

    苹果xs可以升级5g吗(苹果xs可以升级ios16吗)

  • qqwifi在线是什么意思(qq上wifi在线是说明那个人在玩手机吗)

    qqwifi在线是什么意思(qq上wifi在线是说明那个人在玩手机吗)

  • 在拼多多买东西付了钱没有订单怎么办(在拼多多买东西好友能看见吗)

    在拼多多买东西付了钱没有订单怎么办(在拼多多买东西好友能看见吗)

  • vivo手机lte什么意思(vivo lte手机开关在哪里)

    vivo手机lte什么意思(vivo lte手机开关在哪里)

  • 文档编辑不了怎么办(word文档编辑不了怎么办)

    文档编辑不了怎么办(word文档编辑不了怎么办)

  • qq电话铃声怎么关闭(qq电话铃声怎么设置自定义)

    qq电话铃声怎么关闭(qq电话铃声怎么设置自定义)

  • 为什么苹果的效果短信别人看不到(为什么苹果的质感那么好)

    为什么苹果的效果短信别人看不到(为什么苹果的质感那么好)

  • 快手怎么取关所有人(快手怎么取关所有粉丝)

    快手怎么取关所有人(快手怎么取关所有粉丝)

  • 小米m1805d1se是什么型号(小米m1805d1sg是什么型号)

    小米m1805d1se是什么型号(小米m1805d1sg是什么型号)

  • 外星人笔记本键盘失灵(外星人笔记本键盘亮屏幕不亮)

    外星人笔记本键盘失灵(外星人笔记本键盘亮屏幕不亮)

  • 苹果8支持nfc功能吗(苹果支持nfc功能门禁卡吗)

    苹果8支持nfc功能吗(苹果支持nfc功能门禁卡吗)

  • python中Git分支操作(python gitpython)

    python中Git分支操作(python gitpython)

  • 二手车过户需要带什么资料
  • 融资租赁印花税怎么交
  • 个税的计算过程
  • 服务行业人工费计入什么科目
  • 小规模减免税款的账务处理
  • 代购货物的缴税情况
  • 新会计准则下接会计科目
  • 生产企业内销和出口
  • 哪些项目容易漏缴个人所得税
  • 取得的收入含税吗
  • 制造费用结转后有没有余额
  • 其他流动资产待抵扣进项税额
  • 新公司接手之前公司的固定资产
  • 奖金多发退回时间怎么算
  • 发票普票冲红
  • 房地产开发企业取得的土地使用权用于建造
  • 物业公司营改增后收入的确认
  • 股东以个人名义签订租赁合同
  • 公司接受安全罚款的账务处理
  • 建筑业预交增值税最新政策
  • 贷款损失准备如何提取
  • 建筑工程劳务费占比例
  • win11卓越性能模式
  • 结转本月主营业务收入800000元,营业外收入2500元
  • sistray.exe - sistray是什么进程 有什么用
  • 清算公司资产怎么入账
  • PHP:pg_fetch_result()的用法_PostgreSQL函数
  • php显示文件目录及路径
  • 期票是不是承兑汇票
  • 辅助生产成本的分配
  • 出口货物的出口日期以
  • 金税三期税收管理系统响应异常返回信息:没有查询
  • mmdetection ValueError: need at least one array to concatenate解决方案
  • 会计科目分类有几种方法
  • 库存现金清零
  • 母公司将子公司的资产负债和当期损益
  • trainer 平替
  • 计算机视觉的应用
  • 微信小程序获取手机号失败
  • 电子税务局没有开票业务
  • 房地产销售未完工产品转完工产品确认的销售收入
  • 利息发票可以抵扣吗
  • 购买公司支付的钱怎么做账
  • 母子公司之间的租赁房屋
  • mysql索引和主键
  • 织梦使用教程
  • python3 tcp
  • 酌量性固定成本是指
  • 上市公司收购其它公司是好是坏
  • 公司个人借款如何下账
  • 每天统计数据的表格
  • 费用报销票跨月可以用吗
  • 收购固定资产账务处理
  • 让渡资产使用权包括
  • 怎么才能不开发票
  • 生产企业免抵退税申报步骤
  • 贷款利息收入要交增值税吗
  • 农村的扶贫政策是什么
  • 开具红字增值税专用发票信息表需要盖章吗
  • 划拨土地使用权管理暂行办法
  • 商会开年会费用怎么入账
  • 公司购买手表入什么科目
  • 收不回来的其他应收账款如何处理?
  • 记账发生错账怎么办
  • mysql中使用instr进行模糊查询方法介绍
  • freebsd命令大全
  • mac自带的看图软件怎么使用
  • 安装metpy
  • m1 macbook压缩能力
  • Linux下使用quota命令管理磁盘空间的实例教程
  • winxp使用到什么时候
  • win10玩游戏遇到问题需要重新启动
  • window注销
  • win10系统应用更新
  • python操作xml文件
  • win10安装node.js
  • unity5.4.0
  • javascript完整代码
  • 加拿大移民知乎
  • 个人有关事项核查情况的报告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设