JavaScript

超轻量级php框架startmvc

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

更新时间:2020-09-27 05:18:01 作者:startmvc
这篇文章主要介绍了JavaScript实现文件下载并重命名代码实例,文中通过示例代码介绍的非常

这篇文章主要介绍了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 文件下载 重命名