前端下载文件几种方式记录

1、使用a标签

eg: <a href="url"></a>

2、winddow.open

eg: window.open(url)

3、form表单模拟ajax请求

function downFile(url, filePath) {
 ...
    var data = {
      'filePath': encodeURIComponent(filePath)
    }
    if (url && data) {
      var form = $('<form></form>')
      form.attr('action', url + '?rand=' + Math.random())
      form.attr('method', 'post')
      for (var item in data) {
        var input = $('<input type="text" />')
        input.attr('value', data[item])
        input.attr('name', item)
        form.append(input)
      }
      form.appendTo('body').submit().remove()
    }
    ...
}

4、xmlHttpRequest ajax 获取二进制流然后转换 (使用此方法需要进一步优化)
注:jquery ajax请求 返回的数据格式没有blob

jquery ajax dataType
类型:String
预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:

  • "xml": 返回 XML 文档,可用 jQuery 处理。
  • "html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
  • "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
  • "json": 返回 JSON 数据 。
  • "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
  • "text": 返回纯文本字符串
function download(url, filePath) {
   var url = url + '?filePath=' + filePath;
   var xhr = new XMLHttpRequest();
   xhr.open('POST', url, true);
   xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   xhr.setRequestHeader("Authorization", $.cookie("Authorization"));
   xhr.responseType = "blob";
   xhr.onload = function () {
     if (this.status === 200) {
       var blob = this.response;
       var reader = new FileReader();
       reader.readAsDataURL(blob);
       reader.onload = function (e) {
         var a = document.createElement('a');
         a.download = 'xxxxxx';
         a.href = e.target.result;
         $("body").append(a);
         a.click();
         $(a).remove();
       }
     }
   };
 
   xhr.send()
 }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容