0

我正在尝试使用 PHP 脚本显示图像。基本上这样 php 脚本会在图像的完整路径上传递,然后它会在浏览器中显示该图像。我已经检查以确保图像存在,它被正确读取等,但是在浏览器中,如果我去那里,我只会看到损坏的图像框(例如 IE 中的小红叉)。

我的脚本发出这些标头:

<?php
header('Last-Modified: ' . gmdate('D, d M Y H:i:s T', filemtime($file)));
header('Content-Type: '.$mime);
header('Content-Length: '.filesize($file)."\n\n");
header('Etag: '.md5($file));
echo $file;
die;

$file包含类似'/var/www/htdocs/images/file.jpg'which works 的东西。$mime'image/jpeg'。_

我也尝试过回显file_get_contents($file),但也没有用。

有什么问题,有什么想法吗?

4

3 回答 3

4
<?php
$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename,"."),1));
switch( $file_extension ) 
    {
    case "gif": 
        $ctype="image/gif"; 
        break;
    case "png": 
        $ctype="image/png"; 
        break;
    case "jpeg":
    case "jpg": 
        $ctype="image/jpeg"; 
        break;
    default:
    }
ob_clean();  // add this before header
header('Content-type: ' . $ctype);
readFile($file);  
?>

有时可能会在任何其他文件中产生额外的空间。因此可以通过在调用 header() 之前调用 ob_clean() 来删除这些额外的空间。

于 2016-05-06T12:08:12.453 回答
2

力求简单...

<?php
header('Content-type:' . mime_content_type($file));
readfile($file);

应该按预期运行。

于 2009-02-17T05:43:37.540 回答
2

我找到了答案,我在?>标记后有一些额外的空格导致标题不起作用。呸呸呸

于 2009-02-17T05:53:07.110 回答