2010-12-18 26 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+)