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

  • 往年有亏损本年没有亏损
  • 税务中的三费是指什么
  • 挂靠到运输公司的车转让给个人如何交增值税
  • 现金流量表季度报表本期金额
  • 利润表收入含其他收入吗怎么填
  • 完税证明可以代替契税发票吗
  • 开发票商品类别与商品明细的区别
  • 冲减往年管理费用
  • 电商平台小规模纳税标准
  • 银票和承兑的区别
  • 银行端查询缴税凭证在哪里缴费
  • 合伙企业年度汇缴申报
  • 国外消费发票可以抵扣吗
  • 专项应付款转资本公积需要什么附件
  • 仓库的账怎么做
  • 苹果电脑删除win系统文件
  • 机票增值税怎么计算
  • 代开专票缴纳的增值税怎么做账?
  • 零售企业进销存怎么结转成本
  • 什么情况下计提信用减值损失
  • 材料采购业务流程
  • 预缴企业所得税怎么做账务处理
  • 商业汇票的承兑银行必须具备下列条件
  • 什么是技术服务工程师
  • 汇算清缴补交的所得税怎么记帐
  • 建筑劳务公司何去何从
  • 报表重分类和不重分类
  • vue-bus
  • php实现会话的步骤
  • 宝塔运行go
  • 工程质保金可以不退吗
  • 帝国cms功能
  • centOS下mysql workbench安装配置教程
  • mongodb中的objectid
  • CORS跨域资源共享漏洞
  • 赠品怎么做
  • 生产企业免抵退税实例
  • 交强险怎么报警
  • 税务局不予受理的依据
  • 企业长期股权投资增加说明什么
  • 个税系统里的免税收入怎么填
  • 公司采购产品赠送给客户会计分录
  • 一个企业只有收入怎么办
  • 自己开发自己施工
  • 医保卡收到钱
  • 预缴的税款抵扣有时间限制吗
  • 计税价格里含税吗
  • 使用SSIS创建同步数据库数据任务的方法
  • mysql参数表
  • 存储过程mysql
  • win7登录不了系统界面
  • ubuntu20.04常用软件
  • macbookpro怎么提升性能
  • CentOS中httpd源代码安装与测试步骤分享
  • ghost安装出错
  • virtualbox安装win7详细教程
  • tcp半连接和全连接
  • Linux系统中的pycharm怎么打开
  • windows8怎么打开开始菜单
  • mac怎么格式
  • mac系统怎么共享文件夹
  • 如何选择性地隐藏部分任务栏程序
  • Javascript之BOM(window对象)详解
  • 电脑windows自动关闭
  • 命令行创建虚拟机
  • 如何编写一个完整的教学目标
  • 深入解析抑郁症:什么是它的表现?别小看它的危害程度!
  • shell echo 特殊字符
  • ip安全策略设置报错
  • jquery左右选择框
  • python最简单
  • zigzag源码
  • JavaScript 入门·JavaScript 具有全范围的运算符
  • 纳税人防伪税控设备未抄报怎么操作
  • 差额征收怎么填报表
  • 关于加强税务稽查工作的思考
  • 噼里啪啦财务公司加盟
  • 北京税务网点
  • 山东国税局官网登录
  • 印花税会计分录怎么做 印花税需要计提吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设