Php 显示文件时内容类型设置不正确

Php 显示文件时内容类型设置不正确,php,jquery,file,mime-types,content-type,Php,Jquery,File,Mime Types,Content Type,我有一个服务器,它提供来自CRM的文件内容。我正在使用fancybox显示文件内容。下面是代码- JQuery代码- $url = 'https://docs.google.com/viewer?url=<server-url>/filename.php?id='+$documentId+'&name='+$name+'&embedded=true'; $.fancybox.open({ padding: 0, href

我有一个服务器,它提供来自CRM的文件内容。我正在使用fancybox显示文件内容。下面是代码-

JQuery代码-

$url = 'https://docs.google.com/viewer?url=<server-url>/filename.php?id='+$documentId+'&name='+$name+'&embedded=true';
$.fancybox.open({
            padding: 0,
            href: $url,
            type: 'iframe',
        });
$url='1!'https://docs.google.com/viewer?url=/filename.php?id=“+$documentId+”&name=“+$name+”&embedded=true”;
$.fancybox.open({
填充:0,
href:$url,
键入:“iframe”,
});
现在在服务器端,我的PHP代码是-

public function _func_getFile($docId, $fileName, $download){
        $data = null;
        $contentTypeMap = array('doc' => 'application/msword', 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'pdf' => 'application/pdf', 'jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'png' => 'image/png');
        if($this->getConnectedToAPI()){
            $data = <CRM serves file data here>
            if($download){
                header('Content-disposition: attachment; filename='.$fileName);
            }else{
                header('Content-disposition: inline; filename='.$fileName);
            }
            $extn = trim(strtolower(array_pop(explode(".", $fileName))));
            header('Content-type: '.$contentTypeMap[$extn]);
            echo $data;
        }
    }
public function\u func\u getFile($docId,$fileName,$download){
$data=null;
$contentTypeMap=array('doc'=>'应用程序/msword','docx'=>'应用程序/vnd.openxmlformats officedocument.wordprocessingml.document','pdf'=>'应用程序/pdf','jpg'=>'图像/jpeg','jpeg'=>'图像/jpeg','png'=>'图像/png');
如果($this->getConnectedToAPI()){
$data=
如果($下载){
标题('Content-disposition:attachment;filename='。$filename);
}否则{
标题('Content-disposition:inline;filename='。$filename);
}
$extn=trim(strtolower(数组_pop(explode(“.”,$fileName)));
标题('Content-type:'。$contentTypeMap[$extn]);
回波数据;
}
}
现在的问题是,当我尝试获取.doc文件或.pdf文件时,它并没有在fancybox中正确显示文件。GoogleDocViewer显示如下错误-

或者有时我得到的doc文件就像纯文本文件一样,没有格式(我猜是XMLs负责格式化)。但是,如果我将pdf的内容类型设置为application/msword,它在所有情况下都能正常工作。但对于doc来说,同样的问题依然存在

有人能指出我哪里出了问题吗?我的猜测是,并没有根据文件的扩展名正确设置内容类型有问题

PS-我能够正确下载所有文件类型。使用此代码的任何类型的文件都没有下载问题。

请参阅