web-dev-qa-db-ja.com

jQueryまたはJavaScript:クライアントファイルのMIMEタイプを取得する

JQueryまたはJavaScriptを使用して、アプリケーションのクライアント側でファイルのMIMEタイプを検出したいと思います。これを行う方法はありますか?ありがとう。

24
SZH

AJAXを使用して、HEADリクエストを作成し、Content-typeヘッダー。ただし、これはHTTPサーバーからファイルを取得している場合にのみ機能します。


何も送信せずに、HTMLファイルチューザーで選択したファイルのMIMEタイプを取得するには、次のことを試してください。

document.getElementById('fileChooserID').files[0].type // e.g. image/png

http://jsbin.com/akati3/2

画像を選択してMIMEタイプを確認し、送信してみてください。次に、画像以外の何かを試してください。

33
Delan Azabani

確実に MIMEタイプを検出する唯一の方法は、サーバー側でファイルを解析すること、それがユーザーが主張するタイプであること、または許可されたタイプのリストに適合することを確認することです。考慮すべき事柄:

1-JavaScriptはローカルファイルシステムへのアクセスを制限しており、それには正当な理由があります。

2-ブラウザから受信したMIMEタイプは信頼できません。送信されたファイルのMIMEタイプとは必ずしも一致しません。

3-ユーザーが許可されたタイプの「ホワイトリスト」に適合するファイルをアップロードすることが許可されている状況では、とにかく検証がおそらく必要です-アプリケーションがファイルを保存するだけでなく、少なくとも、ビデオのランレングスのバージョン番号(Wordドキュメントの場合)などの情報のヘッダーを解析する必要はありません。

5
karim79

アイデアISブラウザーで信頼しない..アイデアは、サーバー側でこの検証を実行することですが、20MBのファイルをブラウザーに送信する前に、次の理由で拒否されると便利です。サーバー内のルール...したがって、このファイルがアップロードされる「候補」である場合、「事前確認」することをお勧めします。最終的な検証はサーバーで実行されます。

4
christian