要測試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以防止它出現在服務器上的錯誤日誌中呢?因爲那沒有顯示任何東西。 –