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);
        }
        }
        });
    
  • 相关阅读:
    十分钟开发一个调用Activity的PhoneGap插件
    Mac下MAMP初试体验
    探索Android中的Parcel机制(上)
    两个栈实现队列+两个队列实现栈----java
    php实现工厂模式
    Hibernate Criterion
    Android用户界面概览
    秒杀多线程第四篇 一个经典的多线程同步问题
    Java串口通信具体解释
    逗比之——程序猿装逼手冊1(0基础版)
  • 原文地址:https://www.cnblogs.com/zy2009/p/6854668.html
Copyright © 2011-2022 走看看