JavaScript实现文件下载的四种方式

JavaScript实现文件下载的四种方式

1、window对象实现文件下载

​ Window 对象表示浏览器中打开的窗口,如果文档包含框架( 或 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。通过window对象的属性location可以获取到Location对象,Location 对象包含有关当前 URL 的信息,通过Location的属性href可以访问指定的URL,例子如下:

var url = "http://10.180.120.153/forum.php?mod=attachment&aid=MTF8ZWZjYTgwZDV8MTYwMzY5MTkxOXwxM3w2";
window.location.href=url;

window对象的方法open可以打开一个新的浏览器窗口或查找一个已命名的窗口,通过该方法也可以实现文件的下载,例子如下:

var url = "http://10.180.120.153/forum.php?mod=attachment&aid=MTF8ZWZjYTgwZDV8MTYwMzY5MTkxOXwxM3w2";
window.open(url);

2、a标签实现文件下载

HTML使用标签 a来设置超文本链接。超链接可以是一个字,一个词,或者一组词,也可以是一幅图像,可以通过点击这些内容来跳转到新的文档或者当前文档中的某个部分。在标签a>中使用了href属性来描述链接的地址,通过a标签可以很方便的实现文件下载,例子如下:

<a href="http://10.180.120.153/forum.php?mod=attachment&aid=MTF8ZWZjYTgwZDV8MTYwMzY5MTkxOXwxM3w2">Java开发者手册</a>

3、form表单实现文件下载

HTML标签来设置表单,通过直接提交表单与后台实现交互,若后端下载接口直接输出文件流,可以通过提交表单的方式来下载文件,例子如下:

var form = document.createElement("form");
form.id = Date.now();
form.action = "http://10.180.120.153/forum.php";
form.method = "GET";
form.target = "";
form.style.display = "none";
var input1 = document.createElement("input");
input1.type = "hidden";
input1.name = "mod";
input1.value = "attachment";
var input2 = document.createElement("input");
input2.type = "hidden";
input2.name = "aid";
input2.value = "MTF8ZWZjYTgwZDV8MTYwMzY5MTkxOXwxM3w2";
document.getElementsByTagName("body")[0].appendChild(form);
form.appendChild(input1);
form.appendChild(input2);
form.submit();
form.parentNode.removeChild(form);

4、XMLHttpRequest实现文件下载

XMLHttpRequest 对象用于在后台与服务器交换数据。XMLHttpRequest 对象可以实现HTTP异步请求,其作用可概括为以下几点:

  • 在不重新加载页面的情况下更新网页
  • 在页面已加载后从服务器请求数据
  • 在页面已加载后从服务器接收数据
  • 在后台向服务器发送数据

XMLHttpRequest 对象可以接收接口返回的文件流,实现文件下载功能,并且可以监控下载状态,兼容Chrome、火狐、IE10、IE11、Edge浏览器,例子如下:

"use strict";

var File = (function(mod) {
   
    /**
     * 单个文件下载.
     * 
     * @param url
     * @param params
     * @param fileName
     */
    mod.download = function(url, params
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_35590003

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值