MongoDB から .docx ファイルを正しく提供するのに問題があります。私はこれをコードとして持っています:
<?php
$m = new Mongo(//params);
$id = $_GET["FID"];
$patternDOCX = '/.docx$/i';
$patternDOC = '/.doc$/i';
$patternPDF = '/.pdf$/i';
$MIME = "";
$gridFS = $m->db->getGridFS();
$filePointer = $gridFS->findOne(array('_id' => new MongoId($id)));
$nameOriginal = $filePointer->file['filename'];
if(preg_match($patternDOCX, $nameOriginal)){
$MIME = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
} elseif(preg_match($patternDOC, $nameOriginal)){
$MIME = "application/msword";
} elseif (preg_match($patternPDF, $nameOriginal)){
$MIME = "application/pdf";
}
header('Content-type: '.$MIME);
header('Content-Disposition: attachment; filename='.$nameOriginal);
echo $gridFS->findOne(array('_id' => new MongoId($id)))->getBytes();
?>
要求されたファイルが pdf の場合、問題なくダウンロードされ、読み取り可能です。ただし、要求されたファイルが .docx の場合、docx ファイルとしてダウンロードされますが、開いたときにエンコーディングを判断できず、提供されるオプションのいずれもドキュメントを正しく表示しません。ある種のエンコーディング ヘッダーがありませんか? どんな助けでも大歓迎です。