mime_content_type()/ finfo_open()を試してみます。 .docではOKですが、.docxでは 'application/zip'、.xlsでは何も返しません。mime_content_typeの一部の拡張で問題が発生しました
問題は何ですか?私のブラウザの問題ですか?
mime_content_type()/ finfo_open()を試してみます。 .docではOKですが、.docxでは 'application/zip'、.xlsでは何も返しません。mime_content_typeの一部の拡張で問題が発生しました
問題は何ですか?私のブラウザの問題ですか?
この質問は基本的に同じです:PHP 5.3.5 fileinfo() MIME Type for MS Office 2007 files - magic.mime updates?
そして、何の解決策は存在しないようです。これはあなたのブラウザではなく、推測しようとしたMIMEの「マジック」ファイルなので、docxとzipfileの違いを伝える方法はありません。なぜなら、docxは実際にはzipファイルなのですから!
あなたが私のようで、何らかの理由でphp> = 5.3.0サーバを使用しているかもしれないし、使用していないかもしれないし、すべてのサーバに1セットのコードを使いたいと思っていて、おそらくmime_content_type関数をサーバあなたはFileinfoを持っていないので、私のような半分のarsedソリューションを使うことができます。これは、php> = 5.3.0の置換関数を作ります。オーバーライドしたいものに固有の特定の文字列、ハードコードされた値を返し、他のすべてのタイプのmime_content_type()を呼び出します。しかし、mime_content_type()が誤って検出したファイルのタイプで、ファイル名が拡張子で終わっていないタイプのファイルであれば、これはうまくいきませんが、それは非常にまれです。
このようなソリューションは、このようなものになります。
function _mime_content_type($filename)
{
//mime_content_type replacement that uses Fileinfo native to php>=5.3.0
if(phpversion() >= '5.3.0')
{
$result = new finfo();
if (is_resource($result) === true)
{
return $result->file($filename, FILEINFO_MIME_TYPE);
}
}
else
{
if(substr($filename, -5, 5) == '.docx')
return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';
else if(substr($filename, -5, 5) == '.xlsx')
return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
else if(substr($filename, -5, 5) == '.pptx')
return 'application/vnd.openxmlformats-officedocument.spreadsheetml.presentation';
//amend this with manual overrides to your heart's desire
return mime_content_type($filename);
}
}
をし、その後、あなたは単に_mime_content_typeの呼び出しでmime_content_typeために、すべての呼び出しを置き換える必要があります。