PHP - 根据文件类型强制下载或在浏览器中查看

时间:2014-06-24 10:43:47

标签: php

我正在使用以下标题来强制下载,但我需要尝试让浏览器显示某些文件,如PDF和JPG,如果这是文件类型,找到exntension很容易,但我怎么能改变这些标题到在浏览器中打开文件?

header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
$header="Content-Disposition: attachment; filename=".$filename.";";
header($header);
header("Content-Transfer-Encoding: binary");
header("Expires:0");
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header("Content-length: $filesize");

1 个答案:

答案 0 :(得分:2)

要在浏览器中显示文件,您需要使用正确的MIME类型。您可以根据文件扩展名自行设置,也可以使用finfo module

function getContentType($filename) {
    $finfo = new finfo(FILEINFO_MIME);
    return $finfo->file($filename);
}

header("Content-Type: " . getContentType($filename));

如果没有这个,浏览器可能会认为它无法处理application/octet-stream内容,并强行下载。

如果要强制下载文件,也应该只发送Content-Disposition标题。如果删除该标题,则浏览器可以决定是显示该文件还是下载该文件。