PHP:强制从上面的根目录下载图像?

PHP:强制从上面的根目录下载图像?,php,download,jpeg,Php,Download,Jpeg,我正试图强制下载位于我网站根目录上方目录中的图像。下载正常,并保存了正确的文件名。但是,结束文件不是有效的图像,无法正常打开或显示。这是我的密码: $photograph = new ViewPhotograph($photograph_id); $photograph->setPhotographVars(); $file = $photograph->getPath('small'); $filename = '1

我正试图强制下载位于我网站根目录上方目录中的图像。下载正常,并保存了正确的文件名。但是,结束文件不是有效的图像,无法正常打开或显示。这是我的密码:

        $photograph = new ViewPhotograph($photograph_id);
        $photograph->setPhotographVars();

        $file = $photograph->getPath('small');
        $filename = '1.jpg';

        header('Content-Description: File Transfer');
        header('Content-Type: image/jpg');
        header('Content-Disposition: attachment; filename=' . $filename);
        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($file));
        ob_clean();
        flush();
        readfile($file);
        exit;

可能有一个PHP警告正在破坏流


注释掉标题,看看是否看到警告。如果你这样做了,修复它。(请注意,您不应该在生产服务器上启用显示错误)。

在调用ob\u clean()之前先启动ob\u


一旦使用echo或类似工具输出了某个内容,您就无法消除此问题,除非在我注释标题之前启动缓冲区,我收到通知:通知:ob_clean()[ref.outcontrol]:删除缓冲区失败。没有要删除的缓冲区。在第35行的C:\xampp\htdocs\invivid\download.php和浏览器上的一堆二进制文件中window@Thin完全删除
ob
调用以及
flush
。我不知道你为什么把它们放在那里。也许在文件的开头,捕捉所有错误或输出