2016-07-08 9 views
0

アップロード時に元のコンテンツタイプ(MIMEタイプ)を見つけなければなりません。ファイルのアップロード中に元のMIMEタイプを見つけるにはどうすればいいですか?

私はPDFファイルのみを許可したいのですが、.exeファイルの名前を.pdf flieに変更すると、そのタイプはpdfです。

これらの種類のファイルを制限したいと考えています。

私は、次のコードを使用しています:

if (!fileMultipart.getContentType().equalsIgnoreCase("application/pdf")) { 
     msg = "Only pdf files are allowed."; 
     System.out.println("Only pdf files are allowed."); 
    } 

はまた、いくつかのオンラインツールは、オリジナルのコンテンツタイプを見つけることが可能です。私はhttp://www.checkfiletype.com/を使ってみました。

+0

あなたは簡単に何もすることはできません。問題はあなたの側ではありません。ダウンロードしたサーバーからファイルをpdf形式で入力すると、それ以上スマートに処理することはできません。ファイル自体にPDFヘッダーがあることを確認しようとするかもしれませんが、私はそれが努力する価値があるかどうか分からないのですか? –

答えて

0

ファイルのコンテンツタイプは、アップロード時にユーザーエージェント/ブラウザによって決定されます。あなたが知っているように、これはなりすまし、または間違っている可能性があります。実際には、ファイルのコンテンツタイプだけではそれ以上はできません。

代わりに、iText,PDFBoxなどのライブラリを使用してPDFを開いて、コンテンツタイプを確認した後でさらに確認することもできます。ファイルを開くことができない場合は、問題があることをユーザーに知らせることができます。

0

公共ブールisPDF(文字列filename){

File file = new File(fileName); 
    System.out.println("file upload isExist " + file.exists()); 
    boolean result = false; 
    //Scanner input = null; 
    try { 
    Scanner input = new Scanner(new FileReader(file)); 
    System.out.println("fileScanner input " + input); 
    while (input.hasNextLine()) { 
     final String checkline = input.nextLine(); 
     if (checkline.contains("%PDF-")) { 
      // a match! 
      result = true; 
      break; 
     } 
    } 
    } catch (FileNotFoundException ex) { 
    System.out.println("file upload is not valid " + file); 
    Logger.getLogger(UploadContractorFile.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    System.out.println("file upload final result " + result); 
    return result; 

}

+1

それを試してください、それは私のために働く。 –

+0

私は、FileではなくMultipartFileのインスタンスを持っています。私はアップロード時にチェックしているので、ファイルのパスがありません。私は一時的なloactionでファイルを保存したくありません。 –

関連する問題