zoukankan      html  css  js  c++  java
  • js解决跨域下载文件

    之前用的是a标签的方式,同源是没有问题的,但一跨域就不行了,试了其它方法,不是报跨域错误,就是在当前页面打开文件,体验相当不好。

    data = data.replace(/\/g, '/');
    var aLink = document.createElement('a');
    aLink.download = data.split('/')[data.split('/').length - 1];
    aLink.href = data;
    aLink.click();

    最终解决方案:

        /**
         * 获取页面文件名
         * @param url 文件url
         */
        function downloadUrlFile(url) {
          url= url.replace(/\/g, '/');
          const xhr = new XMLHttpRequest();
          xhr.open('GET', url, true);
          xhr.responseType = 'blob';
          //xhr.setRequestHeader('Authorization', 'Basic a2VybWl0Omtlcm1pdA==');
          xhr.onload = () => {
            if (xhr.status === 200) {
              // 获取文件blob数据并保存
              var fileName = getFileName(url);
              saveAs(xhr.response, fileName);
            }
          };
    
          xhr.send();
        }
        
        /**
         * URL方式保存文件到本地
         * @param data 文件的blob数据
         * @param name 文件名
         */
        function saveAs(data, name) {
            var urlObject = window.URL || window.webkitURL || window;
            var export_blob = new Blob([data]);
            var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')
            save_link.href = urlObject.createObjectURL(export_blob);
            save_link.download = name;
            save_link.click();
        }
        
        /**
         * 根据文件url获取文件名
         * @param url 文件url
         */
        function getFileName(url) 
        {
            var num = url.lastIndexOf('/')+1
            var fileName = url.substring(num)
            //把参数和文件名分割开
            fileName = decodeURI(fileName.split("?")[0]);
            return fileName;
        }
  • 相关阅读:
    - (NSString *)description
    3.30 学习笔记
    常用的 博客
    iOS 比较好的博客
    iOS查看一段代码运行的时间
    tableview 第一次可以查看tableview 当退出第二次却会出现Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]
    iphone 设置全局变量的几种方法
    java操作控件加密
    关闭windows 警报提示音
    HttpServletRequest简述
  • 原文地址:https://www.cnblogs.com/xtjatswc/p/11345584.html
Copyright © 2011-2022 走看看