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

  • 苹果微信闪光灯怎么设置(苹果微信闪光灯闪烁怎么开启)

    苹果微信闪光灯怎么设置(苹果微信闪光灯闪烁怎么开启)

  • 苹果手机怎么设置陌生人来电(苹果手机怎么设置来电拦截)

    苹果手机怎么设置陌生人来电(苹果手机怎么设置来电拦截)

  • 苹果手机应用与数据在哪里(苹果手机应用与管理在哪里找到)

    苹果手机应用与数据在哪里(苹果手机应用与管理在哪里找到)

  • 苹果手机微信没有声音是怎么回事(苹果手机微信没声音了怎么设置)

    苹果手机微信没有声音是怎么回事(苹果手机微信没声音了怎么设置)

  • 什么是抖音金卡(抖音金卡哪个最难)

    什么是抖音金卡(抖音金卡哪个最难)

  • 手机边角磕碰能修复吗(手机边角磕碰能修复吗,用家里的材料)

    手机边角磕碰能修复吗(手机边角磕碰能修复吗,用家里的材料)

  • 如何隐藏快手id(如何隐藏快手的收藏)

    如何隐藏快手id(如何隐藏快手的收藏)

  • 淘宝猫币有什么用处(淘宝猫币能干嘛)

    淘宝猫币有什么用处(淘宝猫币能干嘛)

  • 电瓶车充电显示绿色充不了电怎么办(电瓶车充电显示功率过低怎么回事)

    电瓶车充电显示绿色充不了电怎么办(电瓶车充电显示功率过低怎么回事)

  • oppo手机屏上时间怎么显示(oppo手机屏时间没有了怎么显示设置)

    oppo手机屏上时间怎么显示(oppo手机屏时间没有了怎么显示设置)

  • oppo手机键盘语音识别不了(oppo手机键盘语言切换在哪里)

    oppo手机键盘语音识别不了(oppo手机键盘语言切换在哪里)

  • 手机号没有实名认证怎么办(手机号没有实名认证停机了怎么办)

    手机号没有实名认证怎么办(手机号没有实名认证停机了怎么办)

  • 云服务是干什么的(云服务是干什么用的)

    云服务是干什么的(云服务是干什么用的)

  • 本地录音在哪个文件夹(本地录音软件)

    本地录音在哪个文件夹(本地录音软件)

  • 小米盒子怎么设置屏保(小米盒子怎么设置开机直达)

    小米盒子怎么设置屏保(小米盒子怎么设置开机直达)

  • 抖音里发的作品怎么删除(抖音里发的作品怎么保存到相册)

    抖音里发的作品怎么删除(抖音里发的作品怎么保存到相册)

  • iphonex分辨率是几k(iphonex分辨率是多少乘多少)

    iphonex分辨率是几k(iphonex分辨率是多少乘多少)

  • 快妖精怎么打不开了

    快妖精怎么打不开了

  • 语音设置在哪(语音设置在哪里打开)

    语音设置在哪(语音设置在哪里打开)

  • 苹果xr防水么(萍果xr防水吗)

    苹果xr防水么(萍果xr防水吗)

  • 小米旗舰机型有哪些(小米旗舰机型有哪些型号)

    小米旗舰机型有哪些(小米旗舰机型有哪些型号)

  • DXEnum.exe是什么进程  DXEnum进程是什么病毒(电脑dwm.exe是什么)

    DXEnum.exe是什么进程 DXEnum进程是什么病毒(电脑dwm.exe是什么)

  • 认识数据库 | SQL语句的介绍和数据类型(认识数据库思维导图)

    认识数据库 | SQL语句的介绍和数据类型(认识数据库思维导图)

  • ZED2跑ORB-SLAM3+双目相机、IMU联合标定+显卡驱动与cuda/cudnn安装

    ZED2跑ORB-SLAM3+双目相机、IMU联合标定+显卡驱动与cuda/cudnn安装

  • 一般纳税人财务要求
  • 一般纳税人净利润如何计算
  • 定额发票怎么验证真伪
  • 零税点的普票和六税点的普票区别
  • 增值税加附加税加企业所得税加印花税是多少个税点
  • 销货清单是否需盖章
  • 旅游企业增值税优惠政策
  • 酒店应不应该为员工提供澡堂
  • 怎样填列分析资产负债表
  • 预付款保函履约保函
  • 固定资产报废变卖收入缴税账务处理
  • 缴纳增值税金税率是多少
  • 怎么去税务局报账流程
  • 小规模收到货运专用发票
  • 税控盘减免在哪里填报
  • 资产损益表怎么看
  • 企业收入准则的主要内容
  • 企业一次性支付多年费用 不摊销
  • 逾期交房违约金怎么算
  • 补提的增值税应该记在哪里
  • 苹果手机录音怎么转换成mp3格式
  • 除了电脑杀毒软件还有啥
  • 苹果电脑屏幕键盘怎么去除
  • php压缩包
  • i911900k与10900k
  • 发生坏账时的会计处理
  • 增值税专票跨月但未认证,怎么作废
  • 如何搭建chatGPT
  • 销售商品怎么做会计分录呢
  • 呆账损失是什么意思
  • php图片下载本地功能
  • 阿圭罗来自哪里
  • 汇算清缴期结束后,税务机关发现企业
  • 关于固定资产管理
  • php 抓取别的网站的内容
  • vue项目使用rem
  • linux命令bzip2
  • 命令行系统
  • 施工单位奖金分配方案
  • 日用品属于哪个类型
  • 社保退回的款怎么继承
  • 策划费多少钱
  • 股东可以领取工资吗
  • 技术人员的工资计入什么费用
  • 应付账款的入账价值应当包括增值税的进项税额
  • 履约保证金打到个人账户合法吗
  • 行政单位可以对外进行投资吗?
  • 季节性停工损失计入存货成本吗
  • 其他应付款不用还了怎么处理
  • 备用金被盗刷了怎么办
  • 发出存货的计价方法一经确定,不得随意改变
  • 高新技术企业进项税加计扣除10%如何填企业所得税季报
  • 省外出差
  • 银行承兑汇票到期无力支付计入什么科目
  • 综合所得的个人所得税有哪些筹划技巧
  • 建筑工程合同中社保基金保证金
  • 收到货款但未开票怎么入账
  • 无形资产摊销费怎么算
  • Linux环境mysql5.7.12安装教程
  • mysql jsonb
  • mysql分页实现
  • win10预览设置
  • mac安装字体方法
  • linux忘记root密码怎么办
  • linux安装有几种方法
  • centos release6.7
  • linux文件目录的含义
  • linux怎么下载安装腾讯Tim?
  • 服务器限制流量
  • great 搬运工
  • 安卓竖屏改横屏
  • python dict 转 list
  • js弹出对话框的命令
  • 北京朝阳地税大厅电话
  • 全国税务发票查询电话
  • 全国企业信用信息系统网官网
  • 青春逐梦税务蓝
  • 汽车维修增值税专用发票
  • 税务局党支部党员大会会议记录
  • 官方客服热线人工台电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设