Guest User

Untitled

a guest
May 1st, 2012
25
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.79 KB | None | 0 0
  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();
Advertisement
Add Comment
Please, Sign In to add comment