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网页内滑动缓冲导航的实现代码
Apr 05 Javascript
javaScript给元素添加多个class的简单实现
Jul 20 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
Sep 09 Javascript
微信小程序  action-sheet详解及实例代码
Nov 09 Javascript
jQuery正则验证注册页面经典实例
Jun 10 jQuery
js CSS3实现卡牌旋转切换效果
Jul 04 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
Sep 19 Javascript
vue中动态绑定表单元素的属性方法
Feb 23 Javascript
详解处理bootstrap4不支持远程静态框问题
Jul 20 Javascript
ES6 中可以提升幸福度的小功能
Aug 06 Javascript
node后端服务保活的实现
Nov 10 Javascript
从原生JavaScript到React深入理解
Jul 23 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
来自phpguru得Php Cache类源码
2010/04/15 PHP
输入值/表单提交参数过滤有效防止sql注入的方法
2013/12/25 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
解决jquery中美元符号命名冲突问题
2014/01/08 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
jquery zTree异步加载简单实例讲解
2016/02/25 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
常用的javascript设计模式
2017/01/11 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
2019/12/18 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
python list使用示例 list中找连续的数字
2014/01/27 Python
python简单实现刷新智联简历
2016/03/30 Python
python实现微信自动回复机器人功能
2019/07/11 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
会计实习自我鉴定
2013/12/04 职场文书
宣传部部长竞选演讲稿
2014/04/26 职场文书
护士感人事迹
2014/05/01 职场文书
计算机系本科生求职信
2014/05/31 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL