[Javalist] Spring - Tomcat - File upload 2MByte
József Keresztes
xesj.hu at gmail.com
2016. Okt. 21., P, 10:52:07 CEST
Sziasztok !
Van egy Spring 4 MVC-s alkalmazásom, ami Tomcat 8-on fut. Szeretnék benne
fájl feltöltést csinálni (commons-fileupload végzi).
A problémám a fájl méret limitálásával van. A dispatcher config-ban be van
állítva a maximális méret, ami 1 Mbyte:
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new
CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(1 * 1024 * 1024); // limit: 1 Mbyte
return multipartResolver;
}
Ha a feltöltendő fájlméret ezt meghaladja, akkor
MaxUploadSizeExceededException keletkezik amit le is kezelek
a @ControllerAdvice osztályomban:
@ExceptionHandler(MaxUploadSizeExceededException.class)
public String handleMaxUploadSizeExceededException(Exception e) {
System.out.println("SAJÁT KEZELŐ: MaxUploadSizeExceededException");
//e.printStackTrace();
return "redirect:http://www.linux.hu";
}
Ha a feltöltendő fájlméret meghaladja az 1 Mbyte-ot, de nem haladja meg a
2MByte-ot, akkor minden úgy történik
ahogy szeretném, lefut a saját hibakezelő, és egy redirect-tel átmegyünk
egy linuxos oldalra.
Ha viszont a fájl méret meghaladja a 2 Mbyte-ot, akkor a spring 2-szer
hívja meg a hibakezelőmet (már ez is gyanús), és több másodpercet is
várakozik egy 3 Mbyte-os fájlnál is,
és utána a böngészőben semmi sem jelenik meg.
*A böngésző kiteszi a "webhely nem érhető el, ellenőrizze az
internetkapcsolatot, proxy-t, ..."*
A firebug-ban nézve a kommunikációt, ekkor a POST kérésre egy "abort"
látszik, mintha nem lenne válasz...
Ha a fájl limitet a multipartResolver-ben felemelem 500 Mbyte-ra akkor
persze működik egy 450 Mbyte-os fájl feltöltés is,
tehát a hiba csak akkor jön *ha feltöltéskor a megengedett limitet és a 2
Mbyte-os is túllépjük*.
Most már sok órám ezzel ment el, és nem tudok rá megoldást, olvasgattam a
neten is, de hiába.
Amiket próbáltam eddig, de egyik sem jött be:
- Tomcat server.xml ben a Connector-nál: maxPostSize="50000000"
- Tomcat server.xml-ben a Connector-nál: maxPostSize="50000000"
maxHttpHeaderSize="100000"
- web.xml-be: <multipart-config> beállítás
- commons-fileupload, commons-io más verzióit használva
- Windows helyett MacOS-en futtatva
- Az @ExceptionHandler egész mást csinál, redirect helyett saját lapra dob,
vagy egy http 409-es választ ad...
- Próba kisebb és nagyobb méretű fájlokkal: 3 Mbyte, 250 Mbyte
Valaki azt írta a neten, de ezt csak az utolsó körben lépném meg, hogy ő
felemeli a fájl feltöltés limitet sok GB-ra, akkor szépen megy a fájl
feltöltés (hacsak ezt is nem lépi túl valaki),
és egy validátor majd ellenőrzni túllépte-e a fájl méret a limitet, amit
kiír a user-nek.
Szóval igazából azt sem tudom ki a ludas ? A Spring, a Tomcat, az
exception-handler ? Ha belefutottatok ebbe, és volt rá megoldás
megköszönném.
Üdv, xesj
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20161021/1428fcbd/attachment.html>
További információk a(z) Javalist levelezőlistáról