[Javalist] Spring - Tomcat - File upload 2MByte

Böszörményi Péter zmblevlist at gmail.com
2016. Okt. 22., Szo, 20:41:56 CEST


A megfejtes:

A szerver visszakuld egy HTTP valaszt _mikozben_ a bongeszo meg tolti 
fol a filet. Ugy tunik emiatt a bongeszo elkuldi a kerest megegyszer. 
Legalabbis ez latszik a wiresharkbol. Ha handlerben a request objektum 
inputstreamjet uresre olvasod, akkor mukodik a dolog. Es hogy miert csak 
egy bizonyos meret felett jon elo? Nem tudom, de az idohoz lehet koze. 
Legalabbis nekem csak akkor jott elo a problema, ha a handler vart 1 
masodpercet.

On 21/10/16 23:56, József Keresztes wrote:
> Közben kipróbáltam a legújabb Spring verzióval is a 4.3.3RELEASE -zel, a
> hiba ugyanúgy fennáll.
>
> Inkább azt kérdezem hogy a Ti Spring-es alkalmazásaitokban, nem jön elő
> ez a hiba ??? Lehetetlen hogy csak nálam legyen.
>
> 2016. október 21. 23:47 József Keresztes írta, <xesj.hu at gmail.com
> <mailto:xesj.hu at gmail.com>>:
>
>     Sziasztok !
>
>     > Honnan szedtél bármekkora file-t? :) Sosem telt meg a memória es/vagy diszk?
>     Van a gépemen egy kis gyűjtemény, a legnagyobb amivel kísérletezem
>     egy kb. 250 MB méretű zip. Ez nálam a munkahelyemen egy upload
>     könyvtár, pont ilyen célokra, azzal is lehet játszani ha magyar
>     ékezetesek a fájlnevek, stb.
>
>     > Ha 3 MB a fajllimit, akkor mi tortenik, ha egy 9 MB-os fajlt probalsz
>     meg feltolteni? Es ha egy 6 MB-osat? Foleg a 6 MB-os eseten erdekel,
>     hogy akkor is duplan hivodik meg az exception handler?
>
>     Mindig duplán hívódik, függetlenül hogy 6MB vagy 250MB-t akarok
>     feltölteni. Arra gondoltam én is hátha darabokban küldi és a darabok
>     egyesével is túl nagyok így mindegyik kiváltja az exception-t, de
>     nem így van.
>
>     Memória és disk sosem telt meg, ilyen gond nem volt.
>
>     Verziók:
>     Tomcat 8.0.9 és Tomcat 8.0.15 verzióval is hibás
>     Spring 4.3.1.RELEASE
>     commons-io 2.5
>     commons-fileupload 1.3.2
>
>     Ezek közül egyedül a Spring 4.3.1.RELEASE-en nem változtattam, a
>     többi változott, de a helyzet ugyanaz maradt. Még az operációs
>     rendszer is változott, Windows10 és MacOS alatt is ugyanez a jelenség.
>
>     Üdv
>
>     2016. október 21. 18:21 Böszörményi Péter írta,
>     <zmblevlist at gmail.com <mailto:zmblevlist at gmail.com>>:
>
>         Csao!
>
>         Tudnal pontos tomcat, spring, es commons upload verziokat mondani?
>
>         On 21/10/16 10:52, József Keresztes wrote:
>
>             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
>
>
>
>
>
>
>
>
>             _______________________________________________
>             Javalist mailing list
>             Javalist at lists.javaforum.hu <mailto:Javalist at lists.javaforum.hu>
>             http://lists.javaforum.hu/mailman/listinfo/javalist
>             <http://lists.javaforum.hu/mailman/listinfo/javalist>
>
>         _______________________________________________
>         Javalist mailing list
>         Javalist at lists.javaforum.hu <mailto:Javalist at lists.javaforum.hu>
>         http://lists.javaforum.hu/mailman/listinfo/javalist
>         <http://lists.javaforum.hu/mailman/listinfo/javalist>
>
>
>
>
>
> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
>


További információk a(z) Javalist levelezőlistáról