JavaScriptを使用してアップロードする前にファイルのコンテンツタイプを検証するにはどうすればよいですか?私は拡張機能の検証を求めていません。PDF、プレーンテキスト、MSWordファイルを検証したい。
djangoforms.ModelForm
を使用してファイルアップロードウィジェットをhtmlに渡します。サーバー側でもこれを達成できませんでした。ここにその質問があります、
JavaScriptを使用してアップロードする前にファイルのコンテンツタイプを検証するにはどうすればよいですか?私は拡張機能の検証を求めていません。PDF、プレーンテキスト、MSWordファイルを検証したい。
djangoforms.ModelForm
を使用してファイルアップロードウィジェットをhtmlに渡します。サーバー側でもこれを達成できませんでした。ここにその質問があります、
攻撃者が他の手段を使用してファイルをアップロードし、検証を回避する可能性があるため、セキュリティは提供されない可能性があります。
拡張子を使用してファイルタイプを確認するには(操作が非常に簡単なため非常に安全ではありません)、JavaScriptを使用できます。この質問を参照してください:ファイルアップロードのファイルタイプを検証するにはどうすればよいですか?
[編集]グーグルした後、要素にmimeタイプのパターンのリストをとるinput
属性があることがわかりました。accept
残念ながら、ほとんどのブラウザはそれを無視します(またはファイル選択ダイアログを微調整するためにのみ使用します)。この質問を参照してください:ファイル入力'accept'属性-それは役に立ちますか?
[編集2]現在、File API(「Webアプリケーションからのファイルの使用」を参照)が、ファイル拡張子を実際に使用したくない唯一の方法のようです。各File
インスタンスにはtype
、mimeタイプを含むプロパティがあります。
ただし、このAPIは進行中のため、どこでも利用できるわけではありません。また、MIMEタイプを取得する保証はありません(プロパティは""
)です。
したがって、このアプローチをお勧めします。FileAPIを試してください。使用できない場合、またはtype
プロパティが空の場合は、ファイル拡張子を使用します。
理論的には、FileAPIを使用してファイルを読み取ることができます。
次に、気になるファイル形式のパーサーをJavaScriptで記述して、それらが一致するかどうかを確認する必要があります。