readfile()通过输出损坏文件


readfile() corrupting file over output

我使用以下代码访问存在的文件

$file = 'monkey.gif';
if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}

它下载很好,但当打开图像查看器时,它拒绝打开,并声明它不是gif文件。是否

我认为您应该将内容类型更改为'images/gif'

我发现代码中的其他地方有一个打印,所以当它强制下载时,它已经损坏了。删除打印成功。