内容处置附件浏览器行为(下载与在浏览器中查看)

Content Disposition attachment browser behavior (download vs. view in browser)

我有一个 PHP 动态生成条形码的脚本。我希望脚本作为 attachment/raw 图像文件下载...所以我设置了以下 headers:

header('Content-Disposition: attachment; filename="eventbarcode.png"; Content-type: image/gif');
header('Content-Transfer-Encoding: binary');

不过,有一件古怪的事情。在 Firefox 中,可以选择下载或在浏览器中打开。在浏览器中打开时,它显示为 HTML/txt 文档。

是否因为我链接到的文件是 "barcode.php" - 它认为应该是 HTML 文件?我会通过制定 .htaccess 规则以通过 mod-rewrite 将 .gif 文件重定向到该脚本来解决问题吗?还是我错过了 header 中的某些内容?

提前致谢!

当它应该是 Content-DispositionContent-Type header 的两个单独调用时,您使用了对 header 函数的单个调用。每次调用都会发送一个新的 header;你不能 "concatenate" headers 使用分号,这就是为什么在你的情况下 Content-Type header 被丢弃。

以下应该有效:

header('Content-Disposition: attachment; filename="eventbarcode.png"');
header('Content-type: image/gif');
header('Content-Transfer-Encoding: binary');