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 相关文章推荐
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
Jan 20 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
Oct 15 Javascript
JS如何判断移动端访问设备并解析对应CSS
Nov 27 Javascript
你不知道的高性能JAVASCRIPT
Jan 18 Javascript
js 获取当前web应用的上下文路径实现方法
Aug 19 Javascript
详解angularjs利用ui-route异步加载组件
May 21 Javascript
Javascript中 toFixed四舍六入方法
Aug 21 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
Aug 12 Javascript
JS操作字符串转数字的常见方法示例
Oct 29 Javascript
JQuery表单元素取值赋值方法总结
May 12 jQuery
React冒泡和阻止冒泡的应用详解
Aug 18 Javascript
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
Apr 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
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
smarty表格换行实例
2014/12/15 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
JavaScript效率调优经验
2009/06/04 Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
2010/12/30 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
2012/12/11 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
JS常用知识点整理
2017/01/21 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
原生js+css实现tab切换功能
2020/09/17 Javascript
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
python实现员工管理系统
2018/01/11 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
python3.4 将16进制转成字符串的实例
2019/06/12 Python
python暴力解压rar加密文件过程详解
2019/07/05 Python
flask实现验证码并验证功能
2019/12/05 Python
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
《放小鸟》教学反思
2014/04/20 职场文书
2015年读书月活动总结
2015/03/26 职场文书
无罪辩护词范文
2015/05/21 职场文书
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android