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 文件。是

我认为您应该将 Content-Type 更改为 'image/gif'

我发现代码中的其他地方有打印,所以当它强制下载时它已损坏。移除印刷品有效。