I am working on a website where the visitor should be able to download a pdf file.
(There are three links to choose from but that is irrelevant)
I wanted to know how to make it so that the visitor can simply click the link and not have to
right click > Save (target) As...
I am open to PHP and or Javascript solutions. Thanks.
EDIT: Can I use javascript to call the PHP and save the file via AJAX?
EDIT2: I used Nirmal’s solution in the end, since it was the simplest to change for all three files. I didn’t need to make 3 files for the three PDF’s and I didn’t need to hand code the switch. BalusC gets the check though since his/her code was up first and does the trick too.
All you basically need to do is to set the
Content-Dispositionheader toattachmentto get a ‘Save As’ dialogue. Here’s a kickoff PHP example:You can’t and don’t want to do this with Javascript.
Important note: due to a poor feature, in MSIE the default filename in ‘Save As’ dialogue won’t be derived from the
content-dispositionheader, it will instead be the last part of the pathinfo in the request URL. To workaround this, append the PDF filename to the link, e.g.http://example.com/pdf/foo.pdf. You can even make use of it in PHP to read the in the pathinfo specified PDF file. Here’s a basic example ofpdf.php:This however assumes that you’ve
MultiViewson so that/pdf/will go through this PHP file, or at least aRewriteRulefrom/pdf/to/pdf.php/.The major advantage of this approach is that you don’t need to change the code whenever you want to add a new PDF file or change the PDF file name.
You can even make it more generic by automatically determining and setting the correct content type:
Name it
files.phpor so and then you have a generic PHP downloader which you can access by for examplehttp://example.com/files/foo.pdf,http://example.com/files/bar.zip, etcetera.Hope this helps.