我需要使用This Class从我使用的文章编写网站服务多个文件(img / video / mp3),唯一且主要的问题是: 文章中的所有图像都应该由该类显示,并且该类不显示图像(通过URL调用时启动下载)。 我设法通过删除此行(可能是第107行)来修复此问题
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 :(得分: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类型。
答案 1 :(得分:0)
将 Content-Disposition 设置为附件实际上是用于不直接显示资源:
Bodyparts可以被指定为“附件”,表示它们与邮件主体分开,并且它们的显示不应该是自动的,而是取决于用户的一些进一步操作。
但是虽然Content-Disposition header field是MIME的一部分而不是HTTP的一部分,但它“已被提议作为原始服务器建议默认文件名的手段,如果用户请求将内容保存到文件。“(见HTTP/1.1 – 19.5 Additional Features)
除此之外,建议使用特殊媒体类型 application / octet-stream 来暗示下载:
如果在带有application / octet-stream内容类型的响应中使用此标头,则隐含的建议是用户代理不应显示响应,而是直接输入“save response as ...”对话框。
但是,由于您希望直接显示资源,请改为使用 Content-Disposition 值内联。使用此功能,您还可以使用 filename 参数指定与URL不同的文件名。
有关用于编码 filename 参数的编码的更多信息,另请参阅Julian Reschke’s Test Cases for HTTP Content-Disposition header field and the Encodings defined in RFC 2047 and RFC 2231/5987。