I've got a PHP script that generates a barcode dynamically. I want the script to download as an attachment/raw image file... so I have the following headers set:
header('Content-Disposition: attachment; filename="eventbarcode.png"; Content-type: image/gif');
header('Content-Transfer-Encoding: binary');
There's one quirky thing, though. In Firefox the option is there to either download or open in the browser. When opened in the browser, it shows up as an HTML/txt document.
Is it because the file I'm linking to is "barcode.php" - which it thinks ought to be an HTML document? Would I resolve the issue by making an .htaccess rule to redirect .gif files to that script via mod-rewrite... or did I miss something in the header?
Thanks in advance!
You're using a single call to the header
function when it's supposed to be two separate calls for the Content-Disposition
and Content-Type
headers. Each call sends a new header; you cannot "concatenate" headers using semicolons, which is why in your case the Content-Type
header was discarded.
The following should work:
header('Content-Disposition: attachment; filename="eventbarcode.png"');
header('Content-type: image/gif');
header('Content-Transfer-Encoding: binary');