位置: IT常识 - 正文

【前端文件下载】直接下载和在浏览器显示下载进度的下载方法(前端实现文件下载功能)

编辑:rootadmin
【前端文件下载】直接下载和在浏览器显示下载进度的下载方法 文件下载方法

推荐整理分享【前端文件下载】直接下载和在浏览器显示下载进度的下载方法(前端实现文件下载功能),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:前端实现文件下载功能,前端 文件下载,前端下载文件到指定路径,前端下载后端文件,前端页面下载,前端下载文件到指定路径,前端 文件下载,前端下载后端文件,内容如对您有帮助,希望把文章链接给更多的朋友!

【前端文件下载】直接下载和在浏览器显示下载进度的下载方法(前端实现文件下载功能)

之前做下载文件遇到了点问题, 就趁此机会总结一下前端下载文件的方法:

如果是浏览器支持的类型, 那么打开的话是一个preview操作, 那么针对浏览器不支持预览的类型, 如果打开的话就会进行下载操作

a. 地址栏直接输入URL b. window.location.href = URL c. window.open(URL)

使用a标签来下载, 利用a标签的download属性, 并且可以自定义下载文件的名称 也可以直接通过js来创建一个a标签, 然后放入body里, 触发其点击事件来下载, 下载过后remove即可

<a href="/xx/xxx.jpg" download="fileName">通过XMLHttpRequest下载 缺点: 此方法是下载完毕之后才在浏览器左下角弹出对应的文件信息, 没有下载的进度, 如果文件比较大的话, 就会感觉点击了只是在loading但是并不能确定文件是否在下载, 也无法知道文件的下载进度, 体验感不好// 接收url fileName, 以及文件下载成功之后的回调downLoadFile(url, fileName, callback) { const url2 = url; // url.replace(/\\/g, "/"); const xhr = new XMLHttpRequest(); xhr.open("GET", url2, true); xhr.responseType = "blob"; //xhr.setRequestHeader('Authorization', 'Basic a2VybWl0Omtlcm1pdA=='); // 为了避免大文件影响用户体验,建议加loading xhr.onload = () => { if (xhr.status === 200) { // 获取文件blob数据并保存 // const suffix = this.getFileSuffix.call(this, url, fileName); // this.saveAs.call(this, xhr.response, fileName) this.saveAs.call(this, xhr.response, fileName) }// 下载成功之后执行回调 callback && callback(); }; xhr.send();},通过OSS实现有进度条的下载方法 优点: 点击下载之后直接在浏览器左下角弹出对应的文件信息以及下载的进度, 体验感比较好// 下载操作downloadAction(row, type = '') { // 获取上传参数 getDownloadParam().then(data => { // 拿到参数之后去创建 OSS 客户端对象 this.createOssClient(data).then(client => { const filename = row.name; const response = { 'content-disposition': `attachment; filename=${encodeURIComponent(filename)}` }; const url = client.signatureUrl(row.file_path, { response }); window.location.href = url; }); }).catch(err => { })},// 创建 OSS 客户端对象createOssClient(data) { return new Promise((resolve) => { const client = new OSS({ region: data.region, accessKeyId: data.access_key_id, accessKeySecret: data.access_key_secret, stsToken: data.security_token, bucket: data.bucket, }); resolve(client) })},

欢迎大家一起讨论学习😊~

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

上一篇:【HTML】有趣的代码合集(附源码)(有趣的css代码)

下一篇:Pytorch文档解读|torch.nn.MultiheadAttention的使用和参数解析(pytorch说明文档)

  • 钉钉怎么换绑手机号(钉钉如何更换绑定手机号)

    钉钉怎么换绑手机号(钉钉如何更换绑定手机号)

  • 苹果怎么设置热点权限(苹果怎么设置热点黑名单)

    苹果怎么设置热点权限(苹果怎么设置热点黑名单)

  • 无效视频什么意思(无效视频是什么)

    无效视频什么意思(无效视频是什么)

  • 苹果手机大于150m怎么下载(苹果手机大于150w充电器)

    苹果手机大于150m怎么下载(苹果手机大于150w充电器)

  • 抖音二维码图片怎么扫(抖音二维码图片加好友)

    抖音二维码图片怎么扫(抖音二维码图片加好友)

  • 手机号和微信号不一致怎么办(手机号和微信号都搜索不到人怎么办)

    手机号和微信号不一致怎么办(手机号和微信号都搜索不到人怎么办)

  • 华为手机有哪些型号的手机(华为手机有哪些系列,不同系列代表什么含义)

    华为手机有哪些型号的手机(华为手机有哪些系列,不同系列代表什么含义)

  • 笔记本增加内存条好处(笔记本增加内存条有什么用)

    笔记本增加内存条好处(笔记本增加内存条有什么用)

  • 华为荣耀30pro可以无线充电吗(华为荣耀30Pro可以升级内存吗?)

    华为荣耀30pro可以无线充电吗(华为荣耀30Pro可以升级内存吗?)

  • iphone发邮件发不出去(苹果手机邮件发不出)

    iphone发邮件发不出去(苹果手机邮件发不出)

  • 怎么把lte改为4g(怎样把lte变成了4g)

    怎么把lte改为4g(怎样把lte变成了4g)

  • 苹果7plus多重(iphone 7plus重量多少克)

    苹果7plus多重(iphone 7plus重量多少克)

  • iphone11像素多少万(4800万与苹果1200万区别)

    iphone11像素多少万(4800万与苹果1200万区别)

  • ps怎么加白色边框(ps中怎么加白边)

    ps怎么加白色边框(ps中怎么加白边)

  • 怎样修改图片大小(怎样修改图片大小200kb)

    怎样修改图片大小(怎样修改图片大小200kb)

  • 华为p30和mate30机型对比(华为p30与华为mate30)

    华为p30和mate30机型对比(华为p30与华为mate30)

  • vivo手机视频怎么美颜(vivo手机视频怎么设置动态壁纸)

    vivo手机视频怎么美颜(vivo手机视频怎么设置动态壁纸)

  • 小蚁智能摄像机安装(小蚁智能摄像机怎么连接wifi)

    小蚁智能摄像机安装(小蚁智能摄像机怎么连接wifi)

  • 手机屏幕上有一个圆圈是什么意思(手机屏幕上有一个亮点是怎么回事)

    手机屏幕上有一个圆圈是什么意思(手机屏幕上有一个亮点是怎么回事)

  • 新闻app大致有哪些功能(新闻app有哪些)

    新闻app大致有哪些功能(新闻app有哪些)

  • 【解决问题】Vue 项目中安装依赖 npm install 一直报错(vue项目难点及解决方法)

    【解决问题】Vue 项目中安装依赖 npm install 一直报错(vue项目难点及解决方法)

  • vue3 router配置有关parent报null 的错误问题(vue-router)

    vue3 router配置有关parent报null 的错误问题(vue-router)

  • 哀悼日,网站变灰css样式(万科金域华府二手房房源)

    哀悼日,网站变灰css样式(万科金域华府二手房房源)

  • 计入税金及附加的税种口诀
  • 企业之间借款利息进项税可以抵扣吗
  • 小规模纳税人免税账务处理
  • 普票千元版和万元版板面区别
  • 附加税计提多了怎么调整税额
  • 软件服务费280抵扣申报
  • 零申报小微企业注销有影响吗
  • 年未决算的现金利润怎么算
  • 企业所得税公益捐赠扣除限额
  • 报销交通费的会计怎么做
  • 收到三代手续费返还
  • 未支付的款项如何做账
  • 哪些计入应收账款
  • 工资表不给看
  • 财务软件服务费属于什么费用
  • 电子发票没有纳税人识别号有效吗
  • 企业所得税的纳税人和负税人一致吗
  • 坏账损失计入什么费用
  • 无形资产的定义和特征
  • 员工工伤单位垫付
  • 环保税计入项目成本吗
  • 系统升级为win11
  • 进项税转出怎么填报表
  • 没有进项发票的货物能算成本吗
  • 先开票后发货怎么操作
  • 软件服务费怎么算
  • windows更新暂停怎么恢复
  • uniapp中的onload
  • js图片放大代码
  • phpmemcached使用
  • low是什么文件
  • thinkphp登录验证
  • 长期借款的主要原因
  • php数组可以使用哪些键名
  • 其他营业账簿印花税减免政策
  • 多个php文件整合到一起
  • ai安装教程2020
  • vue从入门到精通教程
  • 民营医疗机构是指哪些
  • 微服务网关作用
  • 研发支出属于什么类
  • sqlserver强制转换为字符
  • sql按分隔符截取
  • 公司印章样子
  • 业务招待费报销制度及流程
  • MySQL错误什么意思
  • 办外经证需要交税吗
  • 餐饮行业采购
  • 对于财务的简单理解
  • 非盈利社会团体可以开发票吗
  • 发票有什么重要性
  • 年报审计调整
  • 一般纳税人弱电包工包料怎么开票
  • 什么是非关联方账户
  • 会计各种凭证的填写示例
  • sqlserver导出数据库及表结构
  • 怎样从sql数据库取数据
  • sql server 自增列设置语句
  • 清空数据库中所有表的数据
  • 开始菜单里设置在哪里
  • Win10 Mobile 10549 预览版新功能上手体验视频
  • Windows Server 2008下 驾驭拨号上网
  • vc运行程序exe停止工作
  • win10自定义壁纸在哪个文件夹里
  • linux系统讲解
  • windows7使用
  • win8开始菜单在右边
  • android属性大全
  • shell自定义命令
  • js 阻止触发某个事件
  • jquery实现自动轮播
  • eclipse运用
  • 江苏省增值税专用发票怎么开
  • 企业税收筹划中的涉税风险及其防范
  • 如何证明发货前货物完好
  • 潍坊市区面积多大
  • 宝马535车船税
  • 现在哪个保险公司车险好
  • 自建房交契税需要什么
  • 一个公司怎么算利润
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设