2012-01-08 7 views

答えて

1

この質問は基本的に同じです:PHP 5.3.5 fileinfo() MIME Type for MS Office 2007 files - magic.mime updates?

そして、何の解決策は存在しないようです。これはあなたのブラウザではなく、推測しようとしたMIMEの「マジック」ファイルなので、docxとzipfileの違いを伝える方法はありません。なぜなら、docxは実際にはzipファイルなのですから!

0

あなたが私のようで、何らかの理由で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ために、すべての呼び出しを置き換える必要があります。

関連する問題