2013-01-04 62 views
10

我正在使用Spring MVC3來處理我的Web應用程序的文件上傳。現在,我可以限制文件的大小用我的XML上下文文件中定義了以下配置上載:如何限制正在上傳到Spring MVC3控制器的文件類型

<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添加方法來檢查文件內容類型或文件類型。

提供的文件類型,那些你想在喜歡的配置限制 -

<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

您還可以檢查MIME類型,並根據您可以限制用戶上傳 JMimeMagic庫將要使用的文件這裏。

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()); 

並檢查條件:

if (!fileExtentions.contains(substring)) 
    //logic 
else 
    //logic 
相關問題