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 相关文章推荐
IE8 原生JSON支持
Apr 13 Javascript
修改jquery.lazyload.js实现页面延迟载入
Dec 22 Javascript
写了10年的Javascript也未必全了解的连续赋值运算
Mar 25 Javascript
使用jQuery清空file文件域的解决方案
Apr 12 Javascript
网站基于flash实现的Banner图切换效果代码
Oct 14 Javascript
JS判断是否360安全浏览器极速内核的方法
Jan 29 Javascript
js实现从左向右滑动式轮播图效果
Jul 07 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
Nov 22 Javascript
Vue项目中跨域问题解决方案
Jun 05 Javascript
微信小程序如何使用云开发
May 17 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
Apr 23 Javascript
js代码实现轮播图
May 04 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
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
PHP中for循环与foreach的区别
2017/03/06 PHP
浅谈PHP封装CURL
2019/03/06 PHP
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
JavaScript 保存数组到Cookie的代码
2010/04/14 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
jquery实现清新实用的网页菜单效果
2015/08/28 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
jquery 实现回车登录详解及实例代码
2016/10/23 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
JS+css3实现幻灯片轮播图
2020/08/14 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
python写的ARP攻击代码实例
2014/06/04 Python
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
Python文件路径名的操作方法
2019/10/30 Python
Python和Sublime整合过程图示
2019/12/25 Python
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
心理学专业毕业生推荐信范文
2013/11/21 职场文书
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
《从现在开始》教学反思
2014/04/15 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
群众路线教育实践活动整改落实情况汇报
2014/10/28 职场文书
2015年档案室工作总结
2015/05/23 职场文书
创业计划书之情侣餐厅
2019/09/29 职场文书