2013-01-04 44 views
10

Spring MVC3を使用してWebアプリケーションのファイルアップロードを処理しています。今のところ、私は私のXMLコンテキスト・ファイルで定義された以下の構成を使用してアップロードされたファイルのサイズを制限することができますSpring MVC3 Controllerにアップロードするファイルタイプを制限する方法

<beans:bean id="multipartResolver" 
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    <beans:property name="maxUploadSize" value="200000"/> 
</beans:bean> 

を私は、ファイルの種類を制限する方法のためではなく、無駄にウェブを精練してきました。私が見つけた記事のほとんどは、ファイルの種類ではなくファイルのサイズを制限する方法しか教えていません。 ご協力いただきありがとうございます。

答えて

6

は、コントローラの要求ハンドラメソッドでチェック/ルーティングを実行してください:

@RequestMapping("/save") 
public String saveSkill(@RequestParam(value = "file", required = false) MultipartFile file) { 
     if(!file.getContentType().equalsIgnoreCase("text/html")){ 
      return "normalProcessing"; 
     }else{ 
      return "redirect: /some/page"; 
     } 
} 
5

あなたはorg.springframework.web.multipart.commons.CommonsMultipartResolverクラスを拡張することができ、ファイルの種類によって、ファイルのアップロードを制限します。 MultipartFileを使用して、ファイルのコンテンツタイプまたはファイルタイプをチェックする方法を追加します。

すると、ファイルの種類を提供し、あなたのような構成で制限したいものを - あなたはまた、MIMEタイプを確認することができますし、それに応じてあなたが JMimeMagicライブラリが使用されたファイルをアップロードするユーザーを制限することができます

<beans:bean id="multipartResolver" 
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    <beans:property name="maxUploadSize" value="200000"/> 
    <beans:property name="restrictFileTypes" value="html,pdf,..."/> 
</beans:bean> 
+3

ファイルの種類をチェックし、そのメソッドを呼び出すことでしょうか? – user12458

+0

@JavaTechnicalこれはBeanとして登録されており、Springフレームワークはファイルをロードする際にそれを処理します。 –

0

ここに。

MagicMatch match = Magic.getMagicMatch(file.getBytes()); 
     System.out.println(match.getMimeType()); 
1

あなたは、このチェックを行うには、ユーザー定義のメソッドを作成することができます

String fileExtentions = ".exe,.dmg,.mp3,.jar"; 
fileName = multipartFile.getOriginalFilename(); 
int lastIndex = fileName.lastIndexOf('.'); 
String substring = fileName.substring(lastIndex, fileName.length()); 

をAND条件チェック:

if (!fileExtentions.contains(substring)) 
    //logic 
else 
    //logic 
関連する問題