美文网首页
前端JavaScript 下载文件

前端JavaScript 下载文件

作者: 他爱在黑暗中漫游 | 来源:发表于2019-04-29 17:44 被阅读0次

1.利用HTML 5 里面为标签添加了一个download的属性

<a href="http://somehost/somefile.zip" download="filename.zip">Download file</a>

w3c演示

JavaScript实现原理

var a = document.createElement("a");
var url = window.URL.createObjectURL(blob);
var filename = "what-you-want.txt";
a.href = url;
a.download = filename;
a.click();
window.URL.revokeObjectURL(url);

2.window.open()方式

<button type="button" id="btn1">下载一个zip(方法1)</button>
<button type="button" id="btn2">下载一个zip(方法2)</button>
$eleBtn1.click(function() {
  window.open(
    "https://codeload.github.com/douban/douban-client/legacy.zip/master"
  );
});
  • 缺点:浏览器会打开一个新窗口,然后迅速自动关闭,体验非常不好。

3.通过form提交

$eleBtn2.click(function() {
  var $eleForm = $("<form method='get'></form>");
  $eleForm.attr(
    "action",
    "https://codeload.github.com/douban/douban-client/legacy.zip/master"
  );
  $(document.body).append($eleForm);
  //提交表单,实现下载
  $eleForm.submit();
});

4.需要上传token的方式(项目中遇到)

function createObjectURL(object) {
  return window.URL ? window.URL.createObjectURL(object) :  window.webkitURL.createObjectURL(object);
}
var xhr = new XMLHttpRequest();
var formData = new FormData();
xhr.open("get", "url"); //url填写后台的接口地址,如果是post,在formData append参数(参考原文地址)
xhr.setRequestHeader("access-token", sessionStorage.getItem("access-token")); // 设置请求头,携带token
xhr.responseType = "blob"; 
xhr.onload = function(e) {
  if (this.status == 200) {
    var blob = this.response;
    var filename = "设备导出.xls"; // 文件名称
    console.log(this.response);
    if (window.navigator.msSaveOrOpenBlob) {
      navigator.msSaveBlob(blob, filename);
    } else {
      var a = document.createElement("a");
      var url = createObjectURL(blob);
      a.href = url;
      a.download = filename;
      document.body.appendChild(a);
      a.click();
      window.URL.revokeObjectURL(url);
    }
  }
};
xhr.send(formData);

相关文章

  • 前端JavaScript 下载文件

    1.利用HTML 5 里面为标签添加了一个download的属性 w3c演示 JavaScript实现原理 2.w...

  • FileReader 读取文件流下载异常问题

    场景 服务器返回文件流,用于下载。前端需要自定义下载文件名,因此需要使用javascript处理文件流blob。 ...

  • 文件上传与下载

    文件上传 前端页面 Action处理类 struts.xml 文件下载 前端页面 处理下载请求的action st...

  • [JavaScript] 文件下载

    一、文件下载 业务中常用的下载类型有多种,其接口的responseType 也不同:xlsx类型是applicat...

  • js blob导出文件 文件下载 中文乱码的问题

    需求:后端文件以二进制流的形式返回给前端, 前端需要读取流文件实现文件下载。 场景:下载成功,文件乱码。 原因:与...

  • 前端文件下载

    最近做项目遇到要把文件放在前端项目中,然后点击下载完整代码: 先把文件放在静态目录src/assets里面 通过i...

  • 单页Web应用:JavaScript从前端到后端pdf

    下载地址:网盘下载 单页Web应用:JavaScript从前端到后端是设计和构建大规模JavaScript单页We...

  • Vue-纯前端导出word文档

    在项目中,我们可以借助后端返回文件流实现文件下载。如果前端有数据,也可以借助前端框架进行下载。本文将介绍如何在前端...

  • Vue-纯前端导出word文档

    在项目中,我们可以借助后端返回文件流实现文件下载。如果前端有数据,也可以借助前端框架进行下载。本文将介绍如何在前端...

  • 21天(js高程)-第2天

    (续···) 与解析嵌入式JavaScript 代码一样,在解析外部JavaScript文件(包括下载文件)...

网友评论

      本文标题:前端JavaScript 下载文件

      本文链接:https://www.haomeiwen.com/subject/gulunqtx.html