要测试readfile()
,我将以下代码放在主index.php文件的最顶部,并且图像正确显示。但是,当我将相同的代码放在我的控制器中时,它只是显示一张破碎的图像。在codeigniter中使用来自控制器的readfile()显示图像
我试着用"$this->output->set_header('Content-Type: image/jpeg');"
替换标题行,但是刚刚得到了乱码字符。我怎样才能让它从控制器显示,因为它从索引文件中显示?我很难过。
代码:
$file = '/home/www/noname.com/public/captcha/1444721011.7843.jpg';
header('Content-Type: image/jpeg');
readfile($file);
exit;
我试图把 “header_remove();”在代码之前的控制器中。结果仍然只是一个破碎的图像(尽管标题看起来相同)。像这样:
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 2166
Content-Type: image/jpeg
Date: Tue, 13 Oct 2015 12:27:43 GMT
Keep-Alive: timeout=5, max=100
Server: Apache
有什么想法?
编辑:我注意到在我的所有页面上有一个空行<!DOCTYPE html >。看到我的意思是在这个链接的顶部,这也是一个codeigniter网站的例子。 view-source:call2you.co。我想知道这是否可能是原因。任何想法,从哪里来的线,所以我可以删除它?
谢谢。不幸的是,退出并没有改变任何东西你的代码也没有。我注意到,在我的所有页面上,在<!DOCTYPE html>之前有一个空行。看到我的意思是在这个链接的顶部,这也是一个codeigniter网站的例子。 view-source:http://call2you.co/。我想知道这是否可能是原因。任何想法是从哪里来的? –
看起来像是在代码中的某处输出空行,或者在打开php标记<<?php'之前有一个新行......无论如何,如果新行是问题,那么如果尝试保存已损坏图像文件并在文本编辑器中打开它应该可以看到'Headers already sent'错误...这将不会显示在浏览器中,因为您正在发送content-type:image/jpeg。 – ahmad
谢谢艾哈迈德。这是问题。正如我在下面提到的,我用ob_end_clean();解决了它。至于'Headers already sent'错误消失了,是否正在发送content-type:image/jpeg以防止它出现在服务器上的错误日志中呢?因为那没有显示任何东西。 –