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

  • oppofindx2pro有nfc功能的吗(oppofindx2pro有nfc吗)

  • 荣耀30耳机孔在哪(荣耀耳机孔在哪个地方)

  • 红米k30pro指纹解锁在哪(红米k30pro指纹解锁不见了)

  • word如何插图进去(如何在word上插图)

  • 荣耀20Pro短信拦截在哪里解除(荣耀20pro骚扰拦截)

  • 苹果照相闪光灯在哪开(苹果照相闪光灯旁边按钮)

  • 养号期间可以发作品吗(养号期间发作品会怎样)

  • qq账号注销后多久生效(qq账号注销多久账号收回)

  • mate30pro怎么调音量(华为mate30prozm怎么调音量)

  • 老年机如何接收验证码(老年机如何接收短信信息)

  • 苹果锁屏了wifi就断了(苹果锁屏了怎么恢复出厂设置)

  • 如何设置双波浪下划线(双波浪线怎么添加)

  • 电脑发送键是哪个(电脑的发送键是哪个)

  • 鼠标键盘插在主机哪里(鼠标键盘插在主机上灯不亮)

  • 怎么给word加边框(怎么给word加边框线)

  • ipad死机怎么强制重启(苹果ipad卡住了怎么强制关机)

  • qqwifi在线是真的在线吗(qq上wifi在线是说明那个人在玩手机吗)

  • 监控显示无网络视频什么原因(监控显示无网络连接什么原因)

  • 抖音怎么绑定微信没有权限(抖音怎么绑定微信支付权限)

  • 数据执行保护怎么关闭(数据执行保护怎么设置)

  • ios11无电脑如何换铃声(没有电脑怎么刷苹果手机系统)

  • 手机怎么设置多张壁纸(手机怎么设置多窗口模式)

  • 手机怎么更新客户端(手机咋更新)

  • 小度在家怎么下载应用(小度在家怎么下载QQ)

  • 湘潭扫码乘车怎么使用(湘潭乘车码怎么用)

  • 美团如何开发票

  • win8键盘灯亮无法打字的解决方法(键盘灯无法开启)

  • owmngr.exe - owmngr是什么进程 作用是什么

  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设 电脑维修 湖南楚通运网络