In my project site, if I click on a link, the PDF opens in a new or parent window. Well I want a box to appear that prompts the user to download the file instead of opening it.
My server is PHP based.
Since your edit states that you're using PHP, here's how to do the same in PHP:
<?php header('Content-type: application/pdf'); header('Content-Disposition: attachment; filename="downloaded.pdf"'); readfile('original.pdf'); ?>
Since you've tagged it .NET, I'd say this is your best solution:
Response.ClearContent(); Response.ClearHeaders(); Response.ContentType = "application/pdf"; Response.AddHeader("Content-Disposition", "attachment;filename=download.pdf"); Response.WriteFile(Server.MapPath("~/files/myFile.pdf")); Response.Flush(); Response.Close();
Change the Content-Type to application/octet-stream. You may find however, that some browsers will infer from the file extension that it should open as a PDF with your favorite PDF viewer.
Response.ContentType = "application/octet-stream";
Also, set the following:
Response.AppendHeader( "content-disposition", "attachment; filename=" + name );
Here's the SO Post which should help:
Allowing user to download from my site through Response.WriteFile()
If you are getting a corrupted file error try this:
header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Cache-Control: private', false); header('Content-Type: application/pdf'); header('Content-disposition: attachment; filename=' . basename($file)); header("Content-Transfer-Encoding: binary"); header('Content-Length: ' . filesize($file)); // provide file size header('Connection: close'); readfile($file);
$file is the full path or url of the file.