[Javalist] Spring - Tomcat - File upload 2MByte

József Keresztes xesj.hu at gmail.com
2016. Okt. 24., H, 09:54:56 CEST


Sziasztok !

Ez a megoldás tényleg működik, köszönöm hogy felderítetted, csak nem tudom
érdemes-e alkalmazni.
Mert ugye ha a file limit 3 MB, ő meg feltölti az 5GB-s filmet, azt is ki
kell szépen olvasni az inputstream-ből, hogy csak egyszer hívódjon meg az
exceptionhandler, és az történjen amit a handler mond.

Egyelőre maradok annál hogy nem állítok be limitet, persze ekkor is
feltöltheti az 5GB-t, de legalább nem egy központi exception handler kezeli
a dolgot, hanem egy validátor megnézi a MultipartFile.size()-t.
Így még azt is nagyon egyszerű megoldni hogy a feltöltés mező mellett
jelenjen meg egy szép piros felirat fájl túl nagy méretére vonatkozóan.

Amúgy ez az egész file limit dolog sántít. Ugyanis nem a webalkalmazáshoz
kellene beállítani hanem egy-egy file upload mezőhöz. Mert mi van ha egy
alkalmazás egyik lapján filmet tölt fel,
a másik lapon meg kisebb fotókat engedünk meg. A limit más és más.


Üdv, xesj

2016. október 22. 20:41 Böszörményi Péter írta, <zmblevlist at gmail.com>:

> 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.javafor
>> um.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
>>
>> _______________________________________________
> Javalist mailing list
> Javalist at lists.javaforum.hu
> http://lists.javaforum.hu/mailman/listinfo/javalist
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.javaforum.hu/pipermail/javalist/attachments/20161024/b709def9/attachment.html>


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