2010-12-18 27 views
4

我在的fancybox顯示圖像大問題。 的圖像會以header()readfile()「生成」的PHP。PHP圖像頭和JavaScript加載

當我直接從瀏覽器訪問腳本一切正常,但是當請求來自的fancybox JavaScript的瀏覽器突然停止響應,並在負荷內容區域很長一段時間後,我得到的二進制代碼,而不是圖像。

下面是代碼:

ob_clean(); 
header('Content-Type: '.$post->post_mime_type); 

$name = basename($post->guid); 
$base = home_url(); 
$path= $_SERVER{'DOCUMENT_ROOT'}.str_replace($base,'',$post->guid); 
header ('Content-Disposition: inline; filename='.$name); 
header ('Content-length: ' .filesize($path)); 
readfile($path); 

的內容屏幕裝入的fancybox:http://img502.imageshack.us/img502/8535/screenq.png

+0

這是否發生在所有瀏覽器?嘗試使用Firebug的插件到Firefox,並期待在Net選項卡來檢查時的fancybox – Basic 2010-12-18 14:43:03

+0

要求恰好正在發送到瀏覽器,這是非常奇怪的,標題看起來不錯,對我來說:http://img24.imageshack.us/img24 /1300/jsheader.png – Adam 2010-12-18 14:52:31

+1

同意 - 他們看起來正確。我唯一能想到的就是fancybox試圖根據文件名猜測圖像類型 - 因爲你是通過重寫的URL來提供它的(至少如果我正確地閱讀你的屏幕截圖),沒有文件名組件。爲了測試的目的,您可以將url語法更改爲'/f5/f5.png'嗎? – Basic 2010-12-18 14:57:51

回答

1

的第一個4個字節輸出的似乎是有效PNG報頭。

請覈實$後> post_mime_type是 「圖像/ PNG」。

我不知道的框架,它可以由罕見感到困惑「內容處置:內聯」報頭,請刪除該行。

+0

mime類型是正確的,正如我所說的當直接從地址欄訪問腳本時一切正常。從DIRECT不是JS訪問http://img513.imageshack.us/img513/7695/headersa.png Chrome的頭信息屏幕擺脫內容處置也無濟於事 – Adam 2010-12-18 14:51:02

1

發現這對http://fancybox.net/faq

的fancybox gueses從URL內容類型,但有時也可能是錯的。解決方案是強制>你的類型,就像這樣 - $(「。selector」)。fancybox({'type':'image'}); (需要版本1.3+)