2012-02-26 4 views
1

私はファイルをアップロードしています。それはfirefox以外のすべてでうまくいきますが、mimetypeはサポートされていません。これは私のコードです:mp3アップロードmimetypeがfirefoxでスペックに欠けている

if(isset($_POST[submitfile])) 
{ 
    $uploadedsong = $_FILES['soup']['tmp_name']; 
      $mimetype = $_FILES['soup']['type']; 
       if($mimetype=="audio/mpeg"||$mimetype=="audio/x-mpeg-3"||$mimetype=="audio/mp3"||$mimetype=="audio/x-mpeg"||$mimetype=="audio/x-mp3"||$mimetype=="audio/mpeg3"||$mimetype=="audio/x-mpeg3"||$mimetype=="audio/mpg"||$mimetype=="audio/x-mpg"||$mimetype=="audio/x-mpegaudio") 
       { 

これは、すべてのブラウザのアップロードを許可しています、Firefoxを除く!非常にイライラする、私はなぜこれが起こっているのか分からない。何か案は?

+0

を取得するために、これを使用してみてください? – hakre

+0

そのfirefox 10.0.2 – JimmyBanks

+0

バージョンではなくMIMEタイプです。 – hakre

答えて

2

ファイルアップロードのMIMEタイプは完全に有益であり、それ以上の明示的な(そして具体的な)バインディングではありません。それに頼らないでください。

Firefoxは、それはあなたがあなたのスクリプトにコード化されてきた誤った予測だが、ここで間違って何もしていない

- PHP Manual­Docsから:

$_FILES['userfile']['type']

ファイルのMIMEタイプを、ブラウザがこれを提供している場合情報。例として「image/gif」があります。しかし、このMIMEタイプはPHP側ではチェックされておらず、したがって、その値を当然のものと見なしません。

この情報の使用は制限されているため、厳密ではありません。

すべてのブラウザ/ OSの組み合わせに対してテストできないため、アップロードされたMIMEタイプを記録する必要があります。

mp3ファイルの慣習に従う必要がある場合は、ファイルを検査する必要もあります。 fileinfo­Docs(すべてのファイル用)の横には、php-readerZend_Mimme_Magicとその他のmp3ファイル関連のライブラリが多数あります。

+0

私は確かにあなたが何を意味するかわからない、私は確認のためにMIMEタイプを使用しています。私は拡張子を取り除いて.mp3に名前を変更します。これは悪い習慣ですか?そうでなければアップロードについてどうすればいいですか? – JimmyBanks

+0

Firefoxがあなたのスクリプトに送るmime-type(content-type)文字列を見て、それがあなたのリストにないかどうかを確認してください。技術的には、どのような種類のコンテンツタイプ(バイナリファイルを意味する 'application/octet-stream'を含む)も、ファイルの種類にかかわらず、あなたに送信することができます。ユーザーがアップロードするファイルを選択した場合、ブラウザは何も確認しません。基本的なオペレーティングシステムがファイルについて提供している情報だけを追加することがよくあります。 – hakre

+0

オハイオ州大丈夫、説明のためにありがとう、それでそれは信頼できるものではありません。 – JimmyBanks

1

は、MIMEタイプ1があなたにFirefoxのを与えている

$file_info = new finfo(FILEINFO_MIME); $mime_type = $file_info->file($file);

+0

この関数を使用しようとすると "class 'finfo'が見つかりません – JimmyBanks

+0

これを実行するにはfileinfo拡張をインストールする必要があります。 – Alex

関連する問題