位置: 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 本地引入)

  • 电脑蓝屏的解决方法(电脑蓝屏的解决方法)(电脑蓝屏的解决办法)

    电脑蓝屏的解决方法(电脑蓝屏的解决方法)(电脑蓝屏的解决办法)

  • 40122494(4012212)

    40122494(4012212)

  • 苹果手机手电筒快捷键在哪里设置(苹果手机手电筒打不开)

    苹果手机手电筒快捷键在哪里设置(苹果手机手电筒打不开)

  • 苹果12息屏时间怎么设置(苹果12息屏时间显示)

    苹果12息屏时间怎么设置(苹果12息屏时间显示)

  • 苹果12有几款机型(苹果12有几款机型有什么区别)

    苹果12有几款机型(苹果12有几款机型有什么区别)

  • 快手有关回是什么意思(快手上的回关什么意思)

    快手有关回是什么意思(快手上的回关什么意思)

  • 换手机后联系人都没了(换手机后联系人少了)

    换手机后联系人都没了(换手机后联系人少了)

  • 云壳怎么卸载(云壳要怎么卸载)

    云壳怎么卸载(云壳要怎么卸载)

  • 小米9耳机插上仍然是外音(小米9耳机插上时有时无)

    小米9耳机插上仍然是外音(小米9耳机插上时有时无)

  • doc是网页文件吗(word打开是网页版怎么办)

    doc是网页文件吗(word打开是网页版怎么办)

  • 1.5v aaa是几号电池(1.5v“aa”)

    1.5v aaa是几号电池(1.5v“aa”)

  • 华为手机信号满格网速太慢是什么原因(华为手机信号满格却无法连接网络)

    华为手机信号满格网速太慢是什么原因(华为手机信号满格却无法连接网络)

  • thinkpad指纹用不了(thinkpad指纹用不了怎么办)

    thinkpad指纹用不了(thinkpad指纹用不了怎么办)

  • word2010分页符怎么删除(office2010分页符)

    word2010分页符怎么删除(office2010分页符)

  • iphonexsmax电池多少毫安(iphonexsmax电池多少hm)

    iphonexsmax电池多少毫安(iphonexsmax电池多少hm)

  • 快手搜索怎么没了(快手搜索怎么没有综合搜索)

    快手搜索怎么没了(快手搜索怎么没有综合搜索)

  • 荣耀20s可以插内存卡吗(华为荣耀20s可以装内存卡吗)

    荣耀20s可以插内存卡吗(华为荣耀20s可以装内存卡吗)

  • 华为jkmal00啥型号(华为jkmal00什么型号手机多少钱)

    华为jkmal00啥型号(华为jkmal00什么型号手机多少钱)

  • 铃声多多怎么识别歌曲(铃声多多怎么识别视频音乐)

    铃声多多怎么识别歌曲(铃声多多怎么识别视频音乐)

  • antenna是什么接口(antennae和antenna)

    antenna是什么接口(antennae和antenna)

  • 库乐队没有位置储存乐曲怎么解决(库乐队显示没有可用位置怎么办)

    库乐队没有位置储存乐曲怎么解决(库乐队显示没有可用位置怎么办)

  • 华为nova5pro指示灯(华为nova5指示灯在哪里设置)

    华为nova5pro指示灯(华为nova5指示灯在哪里设置)

  • 苹果xsmax支持多少w快充(苹果xsmax支持多少瓦无线充电)

    苹果xsmax支持多少w快充(苹果xsmax支持多少瓦无线充电)

  • 设置系统自动更改桌面壁纸的质量(设置系统自动更新一般通过什么窗口)

    设置系统自动更改桌面壁纸的质量(设置系统自动更新一般通过什么窗口)

  • 【css伪类选择器及透明度——附项目图片及代码】(css伪类选择器怎么用)

    【css伪类选择器及透明度——附项目图片及代码】(css伪类选择器怎么用)

  • 员工离职再入职个税人员信息该如何录入?
  • 小规模企业所得税会计分录怎么做
  • 利息税定义
  • 调研费用怎么写
  • 以前未入账固定资产补入账涉及的房产税
  • 其他应付款二级明细
  • 事业单位合并财务交接
  • 资产负债表其他应付款计算公式
  • 企业应交所得税怎么算
  • 农产品增值税进项税额核定扣除办法
  • 政府补助的核算方法名词解释
  • 全资子公司改为独立公司
  • 工资一直挂账未发可以吗
  • 分次缴纳的注册资本入什么科目?
  • 工程部用的测试仪器
  • 预付账款发票到货未到怎么做账
  • 职工旅游费计入什么科目
  • 现金折扣 会计处理
  • 企业计提短期借款利息费用应贷记的会计科目是
  • 印花税已经缴纳了还需要申报
  • 免抵退和免退税哪种划算
  • 怎么导出全年开奖记录
  • 专项资金需要交印花税吗
  • 一年内到期的应收质保金
  • 个体工商户变更法人
  • 固定资产折旧有几类
  • 营改增建筑业
  • win10 microsoft store怎么改变下载途径
  • codeinteger
  • 电子设备摊销额怎么算
  • 厂家赠送的商品如何走账
  • 经营租赁固定资产体现实质重于形式
  • php bcmul
  • pytorch x.view
  • js浅拷贝和深拷贝的方法
  • 微调是调哪里
  • lstm输出多个预测值
  • php删除数据
  • 出口信用保险补贴是否不征税收入
  • 外经证过期没有注销罚款多少
  • 增值税iva
  • php的框架
  • python generation
  • access2010宏操作大全
  • CMS不要让MySQL为你流泪
  • 企业制造费用包括
  • 汇算清缴补缴所得税的报税利润表怎么报
  • 在途物资属于会计科目吗
  • 纳税对象的类型不包括
  • 给离退休人员发放以前年度在岗奖金需要计提工会经费吗
  • 专票已认证还能作废吗
  • 出口企业样品收入分录
  • 财产租赁合同印花税率多少
  • 投资利润率多少算合理
  • 为什么实收资本不属于企业资产
  • 企业给职工发放的自产产品应作为职工福利费管理
  • 如何合理的运用网络
  • 什么情况下需要打狂犬疫苗
  • Windows Server 2008下共享资源访问走捷径
  • crack.exe是什么意思
  • 苹果Mac系统怎么切换输入法
  • linux设置网络ip地址
  • win7系统设备管理器没有端口
  • gcc编译选项详解
  • windows8能免费升10吗
  • win10系统应用和功能中不能卸载
  • 前端面试题及答案2023vue3
  • jquery删除当前元素
  • crontab设置每天执行
  • awk范围筛选
  • 简单使用23 款华为s E可以吗
  • javascript开发基础
  • 叠加计算公式
  • jQuery轻松实现表格的隔行变色和点击行变色的实例代码
  • android遇到的难题,怎么解决的
  • android的基础知识
  • 收集什么比较好
  • ajax获取数据两种类型
  • 如何做好税务党建工作
  • 本季度可以弥补上季度亏损吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设