在做后台web后台开发时,遇到一些表格数据需要导出相应的文件,这就需要js做文件下载操作,通常后台会返回一个文件的链接。
1. 通常模式
通常情况下我们获取到后台返回的文件url打开即可下载文件,可是兼容问题让人脑阔痛。
1 2 3 4 5 6 7 8
| window.open("fileUrl");
window.location.href="fileUrl";
window.location="fileUrl";
|
2. 封装模式
通过内嵌iframe
访问下载
1 2 3 4 5 6 7 8 9 10 11 12
|
function downloadFile(fileUrl) { try{ var elemIF = document.createElement("iframe"); elemIF.src = fileUrl; elemIF.style.display = "none"; document.body.appendChild(elemIF); }catch(e){ alert("下载异常!"); } }
|
通过创建form
表单GET
提交下载
1 2 3 4 5 6 7 8 9 10 11
|
function downloadFile(fileUrl){ var form=$("<form>"); form.attr("style","display:none"); form.attr("target",""); form.attr("method","get"); form.attr("action",fileUrl); $("body").append(form); form.submit(); }
|
通过创建form
表单POST
提交下载
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| function downloadFile(fileUrl){ var form=$("<form>");
form.attr("style","display:none");
form.attr("method","post");
form.attr("action",fileUrl); $("body").append(form);
var input1=$("<input>"); input1.attr("type","hidden"); input1.attr("name","id"); input1.attr("value","123"); form.append(input1);
form.submit(); }
|