JavaScript实现文件下载并重命名代码实例


Posted in Javascript onDecember 12, 2019

这篇文章主要介绍了JavaScript实现文件下载并重命名代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

第一种是HTML官网中的方法

<a href="/images/liang.jpg" rel="external nofollow" download="文件名称">

HTML5 中 a 标签提供了一个 filename 属性,可以下载成指定的 download 属性名称

这种同源访问是没有问题的,但一跨域就不行了,试了其它方法,不是报跨域错误,就是在当前页面打开文件,体验相当不好。

第二种方案比较通用

/**
 * 获取 blob
 * url 目标文件地址
 */
function getBlob(url) {
  return new Promise(resolve => {
    const xhr = new XMLHttpRequest();

    xhr.open('GET', url, true);
    xhr.responseType = 'blob';
    xhr.onload = () => {
      if (xhr.status === 200) {
        resolve(xhr.response);
      }
    };

    xhr.send();
  });
}

/**
 * 保存 blob   
 * filename 想要保存的文件名称
 */
function saveAs(blob, filename) {
  if (window.navigator.msSaveOrOpenBlob) {
    navigator.msSaveBlob(blob, filename);
  } else {
    const link = document.createElement('a');
    const body = document.querySelector('body');
 
    link.href = window.URL.createObjectURL(blob);
    link.download = filename;

    // fix Firefox
    link.style.display = 'none';
    body.appendChild(link);
    
    link.click();
    body.removeChild(link);

    window.URL.revokeObjectURL(link.href);
  }
}

/**
 * 下载
 * @param {String} url 目标文件地址
 * @param {String} filename 想要保存的文件名称
 */
function download(url, filename) {
  getBlob(url).then(blob => {
    saveAs(blob, filename);
  });
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery阻止冒泡和HTML默认操作
Nov 17 Javascript
JavaScript动态创建div属性和样式示例代码
Oct 09 Javascript
为开发者准备的10款最好的jQuery日历插件
Feb 04 Javascript
AngularJS实现元素显示和隐藏的几个案例
Dec 09 Javascript
总结AngularJS开发者最常犯的十个错误
Aug 31 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
Dec 13 Javascript
flexslider.js实现移动端轮播
Feb 05 Javascript
利用10行js代码实现上下滚动公告效果
Dec 08 Javascript
Vue props用法详解(小结)
Jul 03 Javascript
js动态设置select下拉菜单的默认选中项实例
Aug 21 Javascript
vue路由传参页面刷新参数丢失问题解决方案
Oct 08 Javascript
vue props对象validator自定义函数实例
Nov 13 Javascript
vue实现鼠标移过出现下拉二级菜单功能
Dec 12 #Javascript
微信小程序背景音乐开发详解
Dec 12 #Javascript
vue实现商城秒杀倒计时功能
Dec 12 #Javascript
深入理解 TypeScript Reflect Metadata
Dec 12 #Javascript
JS实现商城秒杀倒计时功能(动态设置秒杀时间)
Dec 12 #Javascript
vue-property-decorator用法详解
Dec 12 #Javascript
JS实现动态倒计时功能(天数、时、分、秒)
Dec 12 #Javascript
You might like
一个取得文件扩展名的函数
2006/10/09 PHP
php不用内置函数对数组排序的两个算法代码
2010/02/08 PHP
php二维数组用键名分组相加实例函数
2013/11/06 PHP
PHP捕获Fatal error错误的方法
2014/06/11 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
JS图片预加载 JS实现图片预加载应用
2012/12/03 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
2014/11/06 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
JavaScript forEach()遍历函数使用及介绍
2015/07/08 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
轻松理解Javascript变量的相关问题
2017/01/20 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
Python中运行并行任务技巧
2015/02/26 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
python字符串中的单双引
2017/02/16 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
草莓网化妆品加拿大网站:Strawberrynet Canada
2016/09/20 全球购物
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
python+selenium小米商城红米K40手机自动抢购的示例代码
2021/03/24 Python
《姥姥的剪纸》教学反思
2014/02/25 职场文书
党支部换届选举方案
2014/05/08 职场文书
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS