修复DiscuzX中Nginx下附件MIME类型不正确的问题

其实和Nginx没什么关系 Discuz没做好。
默认的MIME类型是text/plain
但是下载附件的话 必须在header里面输出mime的类型 浏览器才能正常识别二进制文件。
DiscuzX只对图片做了处理 没有对其他文件处理 这样的结果是 下载地址加密的mp3附件 结果很可能是下回来一个mp3 但是后缀是html(开伪静态的情况下) 或者直接显示mp3文件的内容。
只要对forum_attachment.php做如下修正。
默认DiscuzX的文件mime类型存储在库里面对应字段是filetype 可以使用变量$attach['filetype']取得。所以做如下判断即可
[php]
////Mime修正 By ihipop 2011-4-11 17:30

if($attach['filetype']){
$mime = $attach['filetype'];
}else{
$mime = 'application/octet-stream';
}

if($mime){
dheader("Content-Type: $mime");
}[/php]
放在附件输出之前都有效果

比如放在xsendfile处理的前面。

Author Info :
  • From:修复DiscuzX中Nginx下附件MIME类型不正确的问题
  • URL:https://blog.ihipop.com/2011/04/2234.html
  • Please Reserve This Link,Thanks!
  • 发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注