我正在使用以下标题来强制下载,但我需要尝试让浏览器显示某些文件,如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");
答案 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
标题。如果删除该标题,则浏览器可以决定是显示该文件还是下载该文件。