内容处置附件浏览器行为(下载与浏览器中的视图)

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');