2013-01-04 9 views
10

Tôi đang sử dụng Spring MVC3 để xử lý tải lên tệp cho ứng dụng web của tôi. Còn bây giờ, tôi có thể giới hạn kích thước tập tin được tải lên bằng cách sử dụng cấu hình sau đây được xác định trong tập tin xml bối cảnh của tôi:Cách hạn chế loại tệp được tải lên Bộ điều khiển Spring MVC3

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

tôi đã lùng sục trên web cho làm thế nào để hạn chế các loại tập tin nhưng không có kết quả. Hầu hết các bài viết tôi tìm thấy chỉ dạy cách hạn chế kích thước tệp không phải là loại tệp. Cảm ơn trước sự giúp đỡ của bạn.

Trả lời

6

Hãy thử thực hiện việc kiểm tra/định tuyến trong phương thức yêu cầu xử lý của bộ điều khiển của bạn:

@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

Bạn hạn chế tập tin tải lên bởi các loại tập tin, bạn có thể mở rộng org.springframework.web.multipart.commons.CommonsMultipartResolver lớp. Và thêm phương thức để kiểm tra loại nội dung hoặc loại tệp bằng cách sử dụng MultipartFile.

Cung cấp các loại tập tin, những bạn muốn hạn chế trong cấu hình như -

<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

Ai sẽ gọi đó là phương pháp mà kiểm tra các loại tập tin? – user12458

+0

@JavaTechnical Đây là đăng ký như là một bean, và khung mùa xuân sẽ chăm sóc nó trong khi tải các tập tin. –

0

Bạn cũng có thể kiểm tra Mime Type và theo mà bạn có thể hạn chế người dùng tải lên các tập tin JMimeMagic Thư viện sẽ được sử dụng đây.

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

Bạn có thể tạo một người dùng định nghĩa phương pháp để làm việc kiểm tra này:

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

Và kiểm tra các điều kiện:

if (!fileExtentions.contains(substring)) 
    //logic 
else 
    //logic