2010-12-18 16 views
4

私はfancyboxに画像を表示することに大きな問題があります。 イメージは、PHPによってheader()およびreadfile()で「生成」されます。PHPイメージヘッダーとJavaScript読み込み

私はブラウザから直接スクリプトにアクセスしても大丈夫ですが、リクエストがfancyboxのJavaScriptから突然ブラウザが応答を停止し、読み込みコンテンツの領域が長くなってから、イメージではなくバイナリコードを取得します。ここ

コードである:fancyboxにロードされたコンテンツの

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

スクリーン:出力のhttp://img502.imageshack.us/img502/8535/screenq.png

+0

これはすべてのブラウザで発生しますか?ファイアウォールにFirebugアドオンを使ってみて、ネットタブを見て、ファンシーボックス – Basic

+0

でリクエストされたときにブラウザに正確に送信されているものを調べてください。これは非常に奇妙です、ヘッダーは私のために良く見えます:http://img24.imageshack.us/img24 /1300/jsheader.png – Adam

+1

合意 - 彼らは正しいように見えます。私が考えることができるのは、fancyboxがファイル名に基づいて画像の種類を推測しようとしているということです - あなたが書き直したURLから提供しているからです(少なくともスクリーンショットを正しく読んでいる場合は少なくとも) 。テストのために、URL構文を '/f5/f5.png'に変更できますか? – Basic

答えて

1

最初の4バイトの有効なPNGヘッダのように見えます。

$ post-> post_mime_typeが "image/png"であることを確認してください。

私はフレームワークを知らないので、珍しい "Content-Disposition:inline"ヘッダーで混乱する可能性があります。その行を削除してください。これを見つけた

+0

mimeのタイプは正しいですが、スクリプトがアドレスバーから直接アクセスされたときにはすべてが問題ないと言いました。 DIRECT NOT JSアクセスからのChromeヘッダー情報の画面http://img513.imageshack.us/img513/7695/headersa.png Content-Dispositionを削除することは役に立ちません – Adam

1

http://fancybox.net/faq

にFancyBoxは、URLからコンテンツタイプをgueses時にはそれは間違っている可能性があります。解決策はあなたのタイプを強制することです - $( "。selector")。fancybox({'type': 'image'}); (必須バージョン1.3+)

関連する問題