2013-01-04 8 views
10

Używam Spring MVC3 do obsługi przesyłania plików do mojej aplikacji internetowej. Na razie mogę ograniczyć rozmiar pliku są przesyłane za pomocą następującej konfiguracji zdefiniowanej w moim pliku kontekstowego xml:Jak ograniczyć typy plików przesyłane do Spring Controller MVC3

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

mam prana w internecie, jak ograniczyć typ pliku, ale bezskutecznie. Większość artykułów, które znalazłem, uczy tylko, jak ograniczyć rozmiar pliku, a nie typ pliku. Z góry dziękujemy za pomoc.

Odpowiedz

6

Spróbuj wykonać wyboru/routing w sposób prośba procedury obsługi kontrolera za:

@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

ograniczyć przesyłanie plików przez typów plików, można wydłużyć org.springframework.web.multipart.commons.CommonsMultipartResolver klasę. I dodaj metodę, aby sprawdzić typ zawartości pliku lub typ pliku za pomocą MultipartFile.

Zapewnić typów plików, te, które chcą ograniczyć w konfiguracji jak -

<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

Kto nazwałby to metoda, która sprawdza typ pliku? – user12458

+0

@JavaTechnical Jest zarejestrowany jako komponent bean, a struktura wiosenna zajmie się nim podczas ładowania pliku. –

0

Można również sprawdzić typ MIME i zgodnie z tym można ograniczyć użytkownikowi przesyłać pliki JMimeMagic Biblioteka zostaną wykorzystane tutaj.

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

Można utworzyć zdefiniowany przez użytkownika metoda A do zrobienia tego sprawdzenia:

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

i sprawdź stan:

if (!fileExtentions.contains(substring)) 
    //logic 
else 
    //logic 
Powiązane problemy