zoukankan      html  css  js  c++  java
  • 根据 url + fileName下载文件,并更改文件名

    封装一个 downloadFile 方法

    /**
     * 获取 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 default function download(url, filename) { getBlob(url, function(blob) { saveAs(blob, filename); }); }
  • 相关阅读:
    第一章 数据库概论
    规范化
    qt mysql驱动问题解绝
    linux文件系统软链接硬链接
    linux命令总结
    shell应用技巧
    如何使滚动条保持在页面底部
    地图定位问题汇总
    webpack基本用法
    git异常操作解决办法合集
  • 原文地址:https://www.cnblogs.com/jiawei-Wang/p/11289224.html
Copyright © 2011-2022 走看看