zoukankan      html  css  js  c++  java
  • 以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);
        }
        }
        });
    
  • 相关阅读:
    洛谷P2568 GCD
    线段树(模板)
    题解 CF1296D 【Fight with Monsters】
    图片针对父元素居中 TileImg
    npm
    echarts线图,柱状图,饼图option
    mac下修改环境变量
    input获取焦点,但不调起键盘
    mac shh 关联git仓库
    根据滚动条触发动画
  • 原文地址:https://www.cnblogs.com/zy2009/p/6854668.html
Copyright © 2011-2022 走看看