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

  • 华为有实况拍照吗(华为有实况拍照功能吗)

    华为有实况拍照吗(华为有实况拍照功能吗)

  • 微信朋友权限仅聊天是什么意思(微信朋友权限仅聊天能看朋友圈吗)

    微信朋友权限仅聊天是什么意思(微信朋友权限仅聊天能看朋友圈吗)

  • 苹果11相机夜间模式如何设置(苹果11相机夜间模式前置怎么设置)

    苹果11相机夜间模式如何设置(苹果11相机夜间模式前置怎么设置)

  • 惠普m30w怎么无线连接手机(惠普m30w怎么无线连接电脑)

    惠普m30w怎么无线连接手机(惠普m30w怎么无线连接电脑)

  • 投影仪3d功能怎么使用(投影仪的3d模式怎么用)

    投影仪3d功能怎么使用(投影仪的3d模式怎么用)

  • 华为充电器拨后仍显示充电(华为手机充电器拔了还是显示充电)

    华为充电器拨后仍显示充电(华为手机充电器拔了还是显示充电)

  • mlatl00什么型号(华为mlaul00是什么型号)

    mlatl00什么型号(华为mlaul00是什么型号)

  • 三星手机reboot system now是什么意思(三星手机怎么截屏)

    三星手机reboot system now是什么意思(三星手机怎么截屏)

  • 如何让华为用苹果耳机(华为用iphone)

    如何让华为用苹果耳机(华为用iphone)

  • 元屏和组装屏的区别(元屏和组屏区别)

    元屏和组装屏的区别(元屏和组屏区别)

  • bak文件是什么意思(bak文件是干嘛用的)

    bak文件是什么意思(bak文件是干嘛用的)

  • ps圆形路径文字怎么做(ps圆形路径文字怎么调字间距)

    ps圆形路径文字怎么做(ps圆形路径文字怎么调字间距)

  • 荣耀9x升降摄像头寿命(荣耀9x升降摄像头黑屏闪退)

    荣耀9x升降摄像头寿命(荣耀9x升降摄像头黑屏闪退)

  • 算法的时间复杂度取决于(算法的时间复杂度是指执行算法所需要的计算工作量)

    算法的时间复杂度取决于(算法的时间复杂度是指执行算法所需要的计算工作量)

  • 脚注序号怎么加圆圈(脚注序号加在哪里)

    脚注序号怎么加圆圈(脚注序号加在哪里)

  • 快手号播放量低和号有关系吗(快手号播放量低怎么解决)

    快手号播放量低和号有关系吗(快手号播放量低怎么解决)

  • 爱科技耳机哪国的(爱科技耳机是国产吗)

    爱科技耳机哪国的(爱科技耳机是国产吗)

  • nxtcl00是什么版本

    nxtcl00是什么版本

  • 笔记本电源灯不亮开不了机(笔记本电源灯不亮能开机)

    笔记本电源灯不亮开不了机(笔记本电源灯不亮能开机)

  • 华为mate20可以反向充电吗(华为mate20怎么开启反向充电)

    华为mate20可以反向充电吗(华为mate20怎么开启反向充电)

  • 路由器默认网关怎么填写详情(腾达路由器默认网关)

    路由器默认网关怎么填写详情(腾达路由器默认网关)

  • Vue打包优化篇-CDN加速(vue3打包优化)

    Vue打包优化篇-CDN加速(vue3打包优化)

  • DedeCMS 友情链接按分类网站类型调用的方法(html友情链接模板)

    DedeCMS 友情链接按分类网站类型调用的方法(html友情链接模板)

  • 城镇土地使用税减免税政策
  • 要约和承诺有法律效力吗
  • 乙方收到甲方项目建设工程款如何记账
  • 房租收入怎么报税
  • 税款所属期什么意思
  • 固定资产丢失
  • 报关单上消费使用单位可以交税么
  • 电子发票手动导出的发票在哪里
  • 免征增值税的免税政策
  • 出口退税企业退税时间
  • 固定资产属于净资产的哪一项
  • 生产企业的安全员好干吗
  • 月初发票认证能抵扣吗
  • 当月发票入库核销怎么算
  • 分摊长期待摊费用的会计分录
  • 营业外支出税前可以扣除吗
  • 失控包括
  • 仅提供发票
  • 劳务外包与劳务派遣公司
  • 退关税怎么入账
  • 发票遗失登报费用账务处理
  • 期望和方差的计算例题
  • 应付政府补贴款名词解释
  • 隔月的发票能作废吗
  • 申请小型微利企业
  • 工资薪金所得个人所得税税率表
  • 电脑进入bios关机
  • 违建罚款了还算违建吗
  • linux用在哪些方面
  • macos10.15.7补充更新
  • win7无法打开打印机
  • 前端架构怎么搭建
  • 股权划转是否涉及印花税
  • laravel php
  • 餐饮手撕票在哪里买多少钱
  • 个人所得税的现状分析
  • loss for
  • 百度地图 申请
  • 前端v3
  • vue预览word加水印
  • php jsonp
  • python中如何获取列表中的元素
  • 总公司不是小微企业,分公司独立核算的
  • 商品出入库台账
  • 小规模纳税人公转私技巧
  • day35-JSON&Ajax03
  • HTTP/1.1 XCache header field
  • 房屋出租收到的发票
  • 全年一次性奖金并入或单独哪个好
  • 销售自用的生产设备一台
  • mongodb查询操作
  • 一般纳税人认定标准2023年
  • 转账手续费没有发票能税前扣除吗
  • 模具报价成本核算方法
  • 收银系统入库入错了怎么办
  • 期初固定资产算收入吗
  • 预付工程款预算会计怎么做账
  • 出口货物索赔如何确认收入
  • 年底结转损益后如何结转
  • 工会经费主要用于什么服务岗位
  • 董事会会议的召集程序
  • 怎么打开设置管理
  • MySQL中使用____关键字来删除表格中的数据
  • 用命令创建文件夹
  • win10怎么添加
  • centos怎么添加用户
  • 联想yogas
  • windows 7磁盘
  • awk命令的功能是什么
  • Linux httpd(apache)启动失败 解决办法
  • linux文件系统inode
  • css中注释的写法
  • node js php
  • 大家看的是什么
  • python整理表格不用入门
  • easyui导出excel表格
  • unity c++ dll
  • javascript概述
  • 德阳契税2021年新规
  • 济南市土地使用税申报表怎样作废
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设