使用 PHP 显示图像不起作用

发布于 2024-07-14 04:00:25 字数 620 浏览 13 评论 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' 的内容,该内容有效。 $mime'image/jpeg'

我也尝试过回显 file_get_contents($file) 但它也不起作用。

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

I'm trying to display an image using a PHP script. Basically so the php script is passed on the full path to the image, and it then displays that image in the browser. I've checked to make sure the image exists, it is being read correctly, etc, however in the browser i just see the broken image box (e.g the small red cross in IE) if I go there.

My script sends out these headers:

<?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 contains something like '/var/www/htdocs/images/file.jpg' which works. the $mime is 'image/jpeg'.

I have also tried echoing file_get_contents($file) but it didn't work either.

What is the problem, any thoughts?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

恬淡成诗 2024-07-21 04:00:25
<?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() 来删除这些额外的空间。

<?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);  
?>

Some time extra space may be produced in any other file.So those extra spaces can be removed by calling ob_clean() before header() is called.

纵山崖 2024-07-21 04:00:25

力求简单......

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

应该按预期运行。

Striving for simplicity...

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

should function as expected.

不奢求什么 2024-07-21 04:00:25

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

I found the answer, i had some extra whitespace after the ?> tag which was causing the header to not work. grrrrrrr

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文