Ajax得到服务器生成的文件流,下载

前台:

       var downloadFrame;
        function doHisRPTDownload() {
            var period = $("#" + "<%=MonthSelect.ClientID %>").val();
            // Check to be sure this async postback is actually requesting the file download.    
            if (!downloadFrame) {
                downloadFrame = document.createElement("iframe");
                // Add the IFRAME to the page.  This will trigger a request to GenerateFile now.       
                document.body.appendChild(downloadFrame);
                // This makes the IFRAME invisible to the user.       
                downloadFrame.style.display = "none";
            }
            // Point the IFRAME to GenerateFile, with the desired region as a querystring argument.   
            downloadFrame.src = "AjaxPage/WebAjaxExportHisRPT.aspx?period=" + period;
            setTimeout("downloadFrame.src=''", 6000);
        }
 
后台:
public void GenerateXLS(DataTable dtstring fileNamestring sheetNameint[] colWidthint[]colWidthCriteriastring selectionCriteria)
        {
            byte[] fileData = nrpt.GetMemoryStream(dtsheetNamecolWidthcolWidthCriteria,selectionCriteria).ToArray();
            this.Response.Clear();
            this.Response.ContentEncoding = System.Text.Encoding.Default;
            this.Response.ContentType = "application/vnd.ms-excel"// "application/octet-stream"; //"application/ms-excel"; //vnd.
            this.Response.AppendHeader("content-disposition""attachment; filename=" +HttpUtility.UrlEncode(fileNameSystem.Text.Encoding.UTF8).Replace("+""%20"));
            this.Response.OutputStream.Write(fileData0fileData == null ? 0 : fileData.Length);
            this.Response.Flush();
            this.Response.End();
}

posted on 2013-03-23 21:49  Amity  阅读(828)  评论(0编辑  收藏  举报