2010-12-06 71 views
0

我需要使用This Class从我使用的文章撰写网站上的多个文件(img/video/mp3),唯一的和主要的问题是: 文章中的所有图像应该由该类显示,并且该类不显示图像(由URL调用时启动下载)。 我设法解决这个问题通过删除这一行(也许线107)在IE中没有显示图片,firefox/chrome/others很好!

header('Content-Disposition:attachment; filename="'.$this->properties["name"].'";'); 

这使我受益匪浅中显示来自Chrome和Firefox,但是IE仍然图像启动下载:(。

有什么路/头,以修复

编辑:

添加以下到元类型:

case "jpg": $content_type="image/".$file_extension; break; 
case "gif": $content_type="image/".$file_extension; break; 
case "png": $content_type="image/".$file_extension; break; 
+0

`$ this-> properties [“name”]`有什么值? – Gumbo 2010-12-06 15:31:00

+0

{anything} .jpg任何东西都是a-zA-Z0-9_ – 2010-12-06 15:34:38

回答

0

随着内容处置设置为附着实际上旨在被不用于显示直接在资源:

正文部分可以被指定`附件”以指示它们是从主分开邮件消息的正文,并且它们的显示不应该是自动的,而是取决于用户的进一步行动。

不过,尽管Content-Disposition header field相当MIME的一部分,而不是HTTP的一部分,它“已被提议作为原始服务器的手段提出一个默认的文件名,如果该内容保存到一个文件中的用户请求。”(参见HTTP/1.1 – 19.5 Additional Features

此外到的是,使用了特殊媒体类型应用/八位字节流建议的暗示下载:

如果此标头与响应中使用应用程序/ o ctet-stream content-type,暗示的建议是用户代理不应该显示响应,而是直接输入`save response as ...'对话框。

但既然要资源直接显示,使用内容处置价值直列来代替。有了这个,你也可以使用的文件名参数来指定一个不同于URL的文件名。

另请参阅Julian Reschke’s Test Cases for HTTP Content-Disposition header field and the Encodings defined in RFC 2047 and RFC 2231/5987了解用于编码文件名参数的编码的更多信息。

0

我的猜测是,IE仍然需要一个有效的Content-Type标题(假设该类不提供图像,因为它只是强制下载)。可能需要更改这段代码:

switch($file_extension) { // the file type 
    case "mp3": $content_type="audio/mpeg"; break; 
    case "mpg": $content_type="video/mpeg"; break; 
    case "avi": $content_type="video/x-msvideo"; break; 
    case "wmv": $content_type="video/x-ms-wmv";break; 
    case "wma": $content_type="audio/x-ms-wma";break; 
    default: $content_type="application/force-download"; 
} 

并添加图像扩展名及其关联的MIME类型。