其实和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处理的前面。