PHP无法使用readfile下载图像

PHP无法使用readfile下载图像,php,jpeg,Php,Jpeg,这是我的代码: $file = 'test.jpg'; 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-r

这是我的代码:

$file = 'test.jpg';
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);
test.jpg是我系统上的一个文件。我可以打开它,它没有任何问题。下载开始了,但当我试图打开下载的图像时,它说无法打开。我在Chrome上测试它。有人有解决办法吗?非常感谢


编辑:下载的.jpg只有23kb,而我想要的文件是135kb。

尝试用echo
文件获取内容($file)替换readfile
尝试设置标题

header('Content-Type: image/jpeg');
ob_clean();
exit;

您将文件内容转储到输出流的何处?请在输出前执行
文件\u exists()
检查。您可以在文本编辑器上打开下载的文件。内容是什么?PHP错误消息?@SebastianBrosch我得到的图像内容如下所示:TUVWXYZcdefghijstuvwxyzƒ…†‡ˆ‰Š'•–™我仍然得到同样的结果result@No佩拉西尼很高兴它奏效了。下面是答案的解释,jpeg图像的内容类型不正确,每次从头文件ob_clean()下载文件时,都会清除前面的缓冲区,从而减少获取垃圾文件的机会。