前端下载文件重命名解决

背景:从服务器下载的资源文件,无法修改名称,产品需要改名称的情况下,只能麻烦后台同学处理

解决方案:

/**
 * 获取 blob
 * @param  {String} url 目标文件地址
 * @return {cb}
 */
function getBlob(url,cb) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', url, true);
    xhr.responseType = 'blob';
    xhr.onload = function() {
      if (xhr.status === 200) {
        cb(xhr.response);
      }
    };
    xhr.send();
}

/**
* 保存
* @param  {Blob} blob
* @param  {String} filename 想要保存的文件名称
*/
function saveAs(blob, filename) {
if (window.navigator.msSaveOrOpenBlob) {
  navigator.msSaveBlob(blob, filename);
} else {
  var link = document.createElement('a');
  var 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 想要保存的文件名称
*/
export function download(url, filename) {
    getBlob(url, function(blob) {
        saveAs(blob, filename);
    });
};
原文地址:https://www.cnblogs.com/ChineseLiao/p/14745612.html