- IE7/8: PDF file won't download with HTTP GET
- <asp:GridView ID="dgvEStatements" runat="server" EnableSortingAndPagingCallbacks="False"
- EnableViewState="true" GridLines="Vertical" Width="100%" AutoGenerateColumns="False"
- CssClass="gridheader" EmptyDataText="<%$ Resources:IBEStatements, dgvEStatements_NoRows %>"
- OnPageIndexChanging="dgvEStatements_PageIndexChanging" OnRowCommand="dgvEStatements_RowCommand"
- OnRowDataBound="dgvEStatements_RowDataBound">
- <Columns>
- <asp:BoundField DataField="Date" HeaderText="<%$ Resources:IBEStatements, dgvEStatements_DateHeader %>"
- HeaderStyle-CssClass="lhs">
- <ItemStyle CssClass="lhs" />
- </asp:BoundField>
- <asp:BoundField DataField="Description" HeaderText="<%$ Resources:IBEStatements, dgvEStatements_DescriptionHeader %>"
- HeaderStyle-CssClass="lhs" />
- <asp:BoundField DataField="DocumentType" Visible="false" HeaderText="<%$ Resources:IBEStatements, dgvEStatements_DocumentTypeHeader %>"
- HeaderStyle-CssClass="lhs">
- <ItemStyle CssClass="lhs" />
- </asp:BoundField>
- <asp:TemplateField>
- <ItemTemplate>
- <asp:LinkButton ID="lnkDownloadEStatement" runat="server" Text="<%$ Resources:IBEStatements, lnkDownloadEStatement %>" />
- </ItemTemplate>
- <ItemStyle CssClass="rhs" />
- </asp:TemplateField>
- </Columns>
- </asp:GridView>
- protected void dgvEStatements_RowDataBound(object sender, GridViewRowEventArgs e)
- {
- if (e.Row.RowType == DataControlRowType.DataRow)
- {
- LinkButton lnkEStatement = (LinkButton)e.Row.FindControl("lnkDownloadEStatement");
- string fileId = DataBinder.Eval(e.Row.DataItem, "StatementID").ToString();
- lnkEStatement.Attributes.Add("onclick", "javascript:EStatementDownload('" + fileId + "'); return false;");
- }
- }
- function EStatementDownload(fileid) {
- var iframe = document.createElement("iframe");
- iframe.src = "EStatementFile.ashx?fileid=" + fileid;
- iframe.style.display = "none";
- document.body.appendChild(iframe);
- }
- public void ProcessRequest(HttpContext context)
- {
- try
- {
- string args = context.Request.QueryString["fileid"].ToString();
- int statementID = 0;
- int.TryParse(args, out statementID);
- string documentID = String.Empty;
- string accountnumber = String.Empty;
- DateTime fileDate = DateTime.MinValue;
- foreach (EStatement item in EStatementListing.EStatements)
- {
- if (statementID == item.StatementID)
- {
- documentID = item.DocumentID;
- accountnumber = item.AccountNumber;
- fileDate = item.DocumentDate;
- break;
- }
- }
- EStatementFacade estatementFacade = new EStatementFacade();
- EStatement estatement = estatementFacade.GetEStatement(documentID, accountnumber, fileDate);
- if (estatement.Document != null)
- {
- context.Response.Clear();
- context.Response.ContentType = "Application/pdf";
- context.Response.Cache.SetCacheability(HttpCacheability.Private);
- context.Response.AppendHeader("Cache-Control", "private; must-revalidate");
- context.Response.AppendHeader("Pragma", "private");
- context.Response.AddHeader("content-disposition", "attachment; filename=" + fileDate.ToString("ddMMyyyy") + ".pdf");
- context.Response.BinaryWrite(estatement.Document);
- context.Response.Flush();
- }
- }
- catch (Exception ex)
- {
- }
- finally
- {
- context.ApplicationInstance.CompleteRequest();
- }
- }
- // snip...
- if (estatement.Document != null)
- {
- context.Response.ClearHeaders();
- context.Response.Clear();
- context.Response.ContentType = "Application/pdf";
- // snip...
- function EStatementDownload(fileid) {
- window.location = "EStatementFile.ashx?fileid=" + fileid;
- }
- Response.Buffer = true;
- Response.Clear();
- Response.ClearContent();
- Response.ClearHeaders();
- Response.ContentType = "application/pdf";
- Response.AddHeader(
- "Content-Disposition",
- string.Format("attachment; filename={0}",filename)
- );
- // stream pdf bytes to the browser
- Response.OutputStream.Write(estatement.Document, 0, estatement.Document.Length);
- Response.End();