Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 1st, 2012  |  syntax: None  |  size: 4.79 KB  |  hits: 14  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. IE7/8: PDF file won't download with HTTP GET
  2. <asp:GridView ID="dgvEStatements" runat="server" EnableSortingAndPagingCallbacks="False"
  3.             EnableViewState="true" GridLines="Vertical" Width="100%" AutoGenerateColumns="False"
  4.             CssClass="gridheader" EmptyDataText="<%$ Resources:IBEStatements, dgvEStatements_NoRows %>"
  5.             OnPageIndexChanging="dgvEStatements_PageIndexChanging" OnRowCommand="dgvEStatements_RowCommand"
  6.             OnRowDataBound="dgvEStatements_RowDataBound">
  7.             <Columns>
  8.                 <asp:BoundField DataField="Date" HeaderText="<%$ Resources:IBEStatements, dgvEStatements_DateHeader %>"
  9.                     HeaderStyle-CssClass="lhs">
  10.                     <ItemStyle CssClass="lhs" />
  11.                 </asp:BoundField>
  12.                 <asp:BoundField DataField="Description" HeaderText="<%$ Resources:IBEStatements, dgvEStatements_DescriptionHeader %>"
  13.                     HeaderStyle-CssClass="lhs" />
  14.                 <asp:BoundField DataField="DocumentType" Visible="false" HeaderText="<%$ Resources:IBEStatements, dgvEStatements_DocumentTypeHeader %>"
  15.                     HeaderStyle-CssClass="lhs">
  16.                     <ItemStyle CssClass="lhs" />
  17.                 </asp:BoundField>
  18.                 <asp:TemplateField>
  19.                     <ItemTemplate>
  20.                         <asp:LinkButton ID="lnkDownloadEStatement" runat="server" Text="<%$ Resources:IBEStatements, lnkDownloadEStatement %>" />
  21.                     </ItemTemplate>
  22.                     <ItemStyle CssClass="rhs" />
  23.                 </asp:TemplateField>
  24.             </Columns>
  25.  
  26.         </asp:GridView>
  27.        
  28. protected void dgvEStatements_RowDataBound(object sender, GridViewRowEventArgs e)
  29. {
  30.  
  31.     if (e.Row.RowType == DataControlRowType.DataRow)
  32.     {
  33.         LinkButton lnkEStatement = (LinkButton)e.Row.FindControl("lnkDownloadEStatement");
  34.  
  35.         string fileId = DataBinder.Eval(e.Row.DataItem, "StatementID").ToString();
  36.         lnkEStatement.Attributes.Add("onclick", "javascript:EStatementDownload('" + fileId + "'); return false;");
  37.     }        
  38. }
  39.        
  40. function EStatementDownload(fileid) {
  41.     var iframe = document.createElement("iframe");
  42.     iframe.src = "EStatementFile.ashx?fileid=" + fileid;
  43.     iframe.style.display = "none";
  44.     document.body.appendChild(iframe);
  45. }
  46.        
  47. public void ProcessRequest(HttpContext context)
  48.     {
  49.         try
  50.         {
  51.             string args = context.Request.QueryString["fileid"].ToString();
  52.  
  53.             int statementID = 0;
  54.             int.TryParse(args, out statementID);
  55.  
  56.             string documentID = String.Empty;
  57.             string accountnumber = String.Empty;
  58.             DateTime fileDate = DateTime.MinValue;
  59.  
  60.             foreach (EStatement item in EStatementListing.EStatements)
  61.             {
  62.                 if (statementID == item.StatementID)
  63.                 {
  64.                     documentID = item.DocumentID;
  65.                     accountnumber = item.AccountNumber;
  66.                     fileDate = item.DocumentDate;
  67.                     break;
  68.                 }
  69.             }
  70.  
  71.             EStatementFacade estatementFacade = new EStatementFacade();
  72.             EStatement estatement = estatementFacade.GetEStatement(documentID, accountnumber, fileDate);
  73.             if (estatement.Document != null)
  74.             {
  75.                 context.Response.Clear();
  76.                 context.Response.ContentType = "Application/pdf";
  77.                 context.Response.Cache.SetCacheability(HttpCacheability.Private);
  78.                 context.Response.AppendHeader("Cache-Control", "private; must-revalidate");
  79.                 context.Response.AppendHeader("Pragma", "private");
  80.                 context.Response.AddHeader("content-disposition", "attachment; filename=" + fileDate.ToString("ddMMyyyy") + ".pdf");
  81.                 context.Response.BinaryWrite(estatement.Document);
  82.                 context.Response.Flush();                                      
  83.             }
  84.         }
  85.         catch (Exception ex)
  86.         {
  87.         }
  88.         finally
  89.         {
  90.             context.ApplicationInstance.CompleteRequest();
  91.         }
  92.     }
  93.        
  94. // snip...
  95.  
  96. if (estatement.Document != null)
  97. {
  98.     context.Response.ClearHeaders();
  99.     context.Response.Clear();
  100.     context.Response.ContentType = "Application/pdf";
  101.     // snip...
  102.        
  103. function EStatementDownload(fileid) {
  104.     window.location = "EStatementFile.ashx?fileid=" + fileid;
  105. }
  106.        
  107. Response.Buffer = true;
  108.             Response.Clear();
  109.             Response.ClearContent();
  110.             Response.ClearHeaders();
  111.             Response.ContentType = "application/pdf";
  112.             Response.AddHeader(
  113.               "Content-Disposition",
  114.               string.Format("attachment; filename={0}",filename)
  115.             );
  116.             // stream pdf bytes to the browser
  117.             Response.OutputStream.Write(estatement.Document, 0, estatement.Document.Length);
  118.             Response.End();