2011-12-29 13 views
0

通常のアップロードAPIを使用してサーバーにファイルをアップロードしています。今、私はアップロードされたファイルが有効なファイルであるかどうかをチェックしたい。アップロード後にファイルの種類を確認する

私は、ページ上に複数のファイルアップロードボックスを持つことができます。要件が異なり、異なる種類のファイルを受け入れる必要があります。言うのために

: -

Input file 1 should take just exe 
Input file 2 should take just html 
Input file 3 should take just pptx 

私は拡張子を確認することができますし、チェックが一つの解決策であるが、それはいくつかのいずれかかもしれない偽の拡張子が起こり、代わりにexeので

txtファイルをアップロードすることができるので、どのようにすることができます私は正しい種類のファイルがアップロードされているかどうかを確認しています

同じものについてはSolutionをいくつか手に入れましたが、それはどうすればよいのでしょうか?コモンズ・ファイルアップロードのAPIについてはすべてのヘルプPLSの

+0

どのAPIを使用していますか? –

+0

私はcommons-fileuploadを使用しています – Varun

答えて

1

、あなたは次のようにコンテンツタイプを取得することができます。

FileItem file; 
String contentType = file.getContentType(); 

をその上で、あなたのロジックを実装するために、いくつかのif-elseを提供することができます。 FileItemはDefaultFileItemです。

+0

これは、ファイルが偽装されるのを助けません。私は 'exe'ファイルの拡張子を' jpg'に変更してアップロードすることができます。 – Varun

1

拡張子を確認した後、ファイルの署名も確認する必要があります。これは、通常、ファイルの最初の数バイトのどこかにあります。良いリストを得るには、かなり多くのファイルとその署名が含まれているので、http://www.garykessler.net/library/file_sigs.htmlを参照してください。

でも、これは絶対確実ではありませんが、ヒューリスティックに掘り下げなければ得られるほど近いです。

0

各ファイルを適切な方法で読み込みます。たとえば、htmlファイルを解析し、POIでpptxファイルをロードしようとします。しかし、exeのためには動作しません。

関連する問題