js 前端实现文件流下载的几种方式

后端是用Java写的一个下载的接口,返回的是文件流,需求:点击,请求,下载

利用iframe实现文件流下载

//把上一次创建的iframe删掉,不然随着下载次数的增多页面上会一堆的iframe
var haveIframe = $("iframe")
if(haveIframe){
    haveIframe.remove();
}
downloadFile(url);
function downloadFile(url) {   
   try{ 
        var elemIF = document.createElement("iframe");   
        elemIF.src = url+'?pSize=1&pNum=1&flag=1&sts=Y';   
        elemIF.style.display = "none";   
        document.body.appendChild(elemIF);   
    }catch(e){ 
        zzrw.alert("下载异常!");
    }     
}

利用from表单实现文件流下载

//同样道理,把上一次创建的form删掉,不然随着下载次数的增多页面上会一堆的form
var haveForm = $("#downloadfileform")
if(haveForm){
    $("#downloadfileform").remove();
}
var $eleForm = $("<form id='downloadfileform' method='get'><input id='input_data' name='data' type='hidden'>" +
        "<input id='pSize' name='pSize' value='"+obj.pSize+"' type='hidden'>"+
        "<input id='pNum' name='pNum' value='"+obj.pNum+"' type='hidden'>"+
        "<input id='flag' name='flag' value='"+obj.flag+"' type='hidden'>"+
        "<input id='sts' name='sts' value='"+obj.sts+"' type='hidden'>"+
        "</form>");
$eleForm.attr("action",url);

$(document.body).append($eleForm);
//提交表单,实现下载
$eleForm.submit();
原文地址:https://www.cnblogs.com/Ivy-s/p/7473163.html