位置: 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说明文档)

  • 销项税转出是啥意思
  • 国家税务总局操作指引
  • 进项税额转出意思是下月还得缴吗
  • 出货一般要多久
  • 建筑工程企业人才引进可以引进医药行业吗
  • 两处工资薪金所得
  • 哪个会计科目必须对全部项目发函证
  • 餐饮注册个体工商户还是注册公司
  • 一次性分红到期还本的会计分录
  • 滴滴的普票可以抵税吗
  • 销项负数发票是代表交易没有成功吗?
  • 建筑发票一般开几个点
  • 佣金开什么发票内容
  • 完全成本法例子
  • 发放取暖补贴文件
  • 成品油一般经营企业交什么税
  • 加油站销售加油卡是否征收增值税
  • 企业发工资交税
  • 过路费去年的票还可以用吗
  • 股权转让印花税是双方都要缴纳吗
  • 国税未核定税种怎么处理
  • 餐饮发票可以抵扣成本吗
  • 交纳经营所得的个税怎么做分录?
  • 货车的折旧率
  • 车辆租赁怎么报税做账
  • 暂估成本跨年怎么算
  • 企业如何选择会计准则
  • 您的磁盘
  • 农民工工资保证金退还条件
  • outpost.exe - outpost是什么进程 有什么用
  • 爱荷华州的首府
  • 域名怎么交费
  • wordpress怎么上传网站
  • 网赚项目——Youtube获取高流量的技巧
  • 小规模纳税人减免增值税会计处理
  • mobilenet模型
  • 关于眼中的世界的作文
  • chk命令
  • string对象放在哪里
  • 累计折旧累计摊销属于现金流吗
  • 公司间代收款需要开票吗
  • 劳务费发票是不是专票
  • phpcms视频教程
  • php用户评论
  • 深入浅析SQL Server 触发器
  • 织梦适合做什么网站
  • 小规模企业每月收入多少可以不纳税
  • access untagged
  • mysql大分页优化
  • 应付职工薪酬怎么冲平
  • 购买花卉
  • 余利宝本金会亏吗
  • 两个其他应收款的区别
  • 把其他应付款转成实收资本的话需要去工商改注册资本么
  • 两家公司的钱混着用怎么做账
  • 纳税人销售免税产品开具专票
  • 期末结账后没有余额的科目
  • 销售佣金的会计科目
  • 提供加工劳务计入什么科目
  • 对公账户有资金往来必须入账吗
  • 会计凭证装订的步骤
  • 计提工资和发放工资的账务处理
  • 期间费用包括哪些费用
  • mysql的基本介绍
  • centos直接安装
  • wmiprvse.exe这是什么进程
  • 怎么用苹果电脑打印照片
  • sqlservr.exe - sqlservr是什么进程 有什么作用
  • 注意 Win/WP8.1开发者账户现已迁移到全新Win10开发者中心仪表盘
  • linux如何快速入门
  • opengl绘制多个图形
  • 批处理 输入密码
  • unity中canvas怎么调框大小
  • os执行cmd命令
  • 用python抓取网页数据的代码
  • 基于python的系统
  • 税务局分类分级
  • 北京税务部门需要党员吗
  • 小规模纳税人可以开13%的发票吗
  • 国税开票二维码图片
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设