以POST方式下載文件


情況1,提交的是非json數據

//流程:臨時構建一個iframe並添加到要提交的form-》修改form的target指向該iframe-》提交form,然后刪除臨時iframe
	    function downloadFile() {  
	    	var $iframe = $('<iframe name="downloadFrame" style="display: none;" frameborder="0" />');  
	    	$("#addxxformfx").append($iframe);  //addxxformfx:form的id
	    	$("#addxxformfx").attr("action","http://localhost:5080/lpproject/report2/previewHtml2.action");//要提交到的action
	    	$("#addxxformfx").attr("target","downloadFrame");//downloadFrame,指向上面iframe的名字
	    	$("#addxxformfx").submit();
	    	 $iframe.remove(); 
   			 } 

 

情況2,提交是的json數據

      使用ajax,ajax的返回值類型是json,text,html,xml類型,或者可以說ajax的發送,接受都只能是string字符串,不能流類型,所以無法實現文件下載。
方法:
1,需要有一個通過文件名等下載文件的方法
2,將要下載文件生成到服務器並獲得文件路徑,設置url到回調函數
3,通過在回調函數里獲得一個生成文件的相關url,通過創建一個iframe,並設置其src值為文件url,這樣訪問下載方法操作來實現文件下載且頁面無刷新。

//iframe:
<iframe src="" style="display:none;" id="downFileIframe"></iframe> 

$.doAjax({
    url:basePath+'resultTarget/downExcelTmpl.action',
    data:'nodes='+$.toJSONString(nodeArray),
    callback:function(msg){
    if (msg.status == 0) {
    var url = basePath+"download.action?fileName="+encodeURI(encodeURI(escape("業績-任務.xls")))+"&filePath="+msg.info;
        $('#downFileIframe').attr('src',url);  
    } else {
    alert(msg.info);
    }
    }
    });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM