Redirecting a page after a PDF download

19,119

Solution 1

I've found it easier to put the PDF download page in an iframe. That way you can activate the PDF download on the client side by just pointing the iframe source to the PDF download page. After that you can either move to a new page, or just show the thank you text right that on the page that has the iframe in it.

Solution 2

If the file is just downloaded, no preprocessing is done, you could try the following:

Response.AddHeader("Refresh", "12;URL=nextpage.aspx");

Where the number is the seconds before refresh is done :)

Solution 3

In HTTP, a request can only have a single response. Since the first response is the PDF file, the seconds response (i.e. the redirect) cannot be implemented.

You can try to redesign the two pages by redirecting to thanks.aspx and have thanks.aspx start the download automatically.

Share:
19,119
priyanka.bangalore
Author by

priyanka.bangalore

Student

Updated on June 04, 2022

Comments

  • priyanka.bangalore
    priyanka.bangalore almost 2 years

    I have an aspx (say 1.aspx) page from where first I am downloading a pdf file and then I want to redirect to some Thanks.aspx page. The code is this:

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        string pathId = string.Empty;
        if (Page.IsValid)
        {
            try
            {    
                pathId = hidId.Value;
                DownloadPDF(pathId);                        
    
                Response.Redirect("Thanks.aspx");
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
    
    
    
    protected void DownloadPDF(string pathId)
    {
        if (!(string.IsNullOrEmpty(pathId)))
        {
             try
            {
                Response.ContentType = "application/pdf";
                Response.AppendHeader("Content-Disposition", "attachment; filename=" + pathId + ".pdf");
                string path = ConfigurationManager.AppSettings["Pdf_Path"].ToString() + "\\" + pathId.Trim() + ".pdf";
                Response.TransmitFile(path);                   
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                HttpContext.Current.ApplicationInstance.CompleteRequest();
            }
        }
    }
    

    The problem is that, the file save dialog is coming properly and I am able to download the file also, but it is not getting redirected to the Thanks.aspx page.

    How to resolve this?

  • priyanka.bangalore
    priyanka.bangalore about 14 years
    I even tried this technique but there also the same problem persist
  • Thomas KiTe Trentin
    Thomas KiTe Trentin almost 10 years
    this totally do the trick, without having to put javascript to handle the redirection. great !
  • Joe
    Joe over 8 years
    This method is much better to use in any instance where you want to forward or redirect to another page after any action, after a delay. This also won't cause possible errors that Response.Redirect might by aborting a thread. If a frame isn't a good solution, this solution should definitely be used.
  • interesting-name-here
    interesting-name-here about 7 years
    I concur with MichaelBrennt and Speuline. Doesn't work in Firefox either. Or maybe I just suck.
  • gilad
    gilad over 4 years
    working in chrome Version 77.0.3865.90 (Official Build) (64-bit)