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 相关文章推荐
懒就要懒到底——鼠标自动点击(含时间判断)
Feb 20 Javascript
JQuery中使文本框获得焦点的方法实例分析
Feb 28 Javascript
JavaScript实现动态添加,删除行的方法实例详解
Jul 02 Javascript
Express的路由详解
Dec 10 Javascript
Bootstrap自定义文件上传下载样式
May 26 Javascript
JS简单测试循环运行时间的方法
Sep 04 Javascript
jQuery中 $ 符号的冲突问题及解决方案
Nov 04 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
Feb 14 Javascript
深入浅析Node.js单线程模型
Jul 10 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
Apr 24 Javascript
layer.alert自定义关闭回调事件的方法
Sep 27 Javascript
浅谈webpack构建工具配置和常用插件总结
May 11 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对字符串的递增运算分析
2010/08/08 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
php实现的通用图片处理类
2015/03/24 PHP
javascript hasFocus使用实例
2010/06/29 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
javascript css红色经典选项卡效果实现代码
2016/05/17 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
JS实现前端路由功能示例【原生路由】
2020/05/29 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
调试Python程序代码的几种方法总结
2015/04/28 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
Django后台admin的使用详解
2019/07/08 Python
手动安装python3.6的操作过程详解
2020/01/13 Python
python redis存入字典序列化存储教程
2020/07/16 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
工厂会计员职责
2014/02/06 职场文书
文明餐桌活动方案
2014/02/11 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
优秀技术工人先进材料
2014/02/17 职场文书
青年联谊会致辞
2015/07/31 职场文书
javascript实现计算器功能详解流程
2021/11/01 Javascript