Re: [Pharo-users] Bad Request ZnEntityTooLarge
Bernhard Pieber <[email protected]>
| Newsgroups | gmane.comp.lang.smalltalk.squeak.seaside,gmane.comp.lang.smalltalk.pharo.user |
|---|---|
| Message-ID | <[email protected]> |
Thank you for your answer, Sven. That’s a bummer. If I understand you correctly, currently there is no hook in Seaside to catch lower level server exceptions (like ZnEntityTooLarge) to show a nice looking error page, e.g. „You are trying to upload a file that’s too large. Don’t do that!“ Really? :-/ Cheers, Bernhard > Am 19.01.2017 um 14:29 schrieb Sven Van Caekenberghe <[email protected]>: > > Hi Bernard, > > Your analysis is correct. > > Most Seaside adaptors, including ZnZincServerAdaptor, are implemented so that the incoming (Zn) request is read from the wire, then converted to Seaside WA* objects, processed, the result converted from WA* objects to an outgoing (Zn) response and put on the wire. > > Zn has some built-in resource protection measures, including a limit on how large entities (bodies) can be. The error of crossing such a limit is raised in the very first step, outside the scope of your Seaside handling code. > > At first sight, I would not immediately know how this can be solved. > > Note that in order to know how much is coming in, you have to read it, but you have to stop in time. Note also that the content-length header could be absent or wrong (a malicious request). > > I can't remember where we currently stand on a streaming Zn Seaside adaptor, there were some experiments in the past IIRC. That could be a solution, because then the entity/body is not read until further down the line, if we can get it to work. The current one only seems to do streaming for responses. > > Sven > >> On 19 Jan 2017, at 13:32, Bernhard Pieber <[email protected]> wrote: >> >> I have a Seaside application which includes a file upload feature. >> >> renderContentOn: html >> … >> html fileUpload >> callback: [ :file | self receiveFile: file ]. >> html submitButton: 'Upload‘ ] >> … >> >> In receiveFile: I just save the uploaded file on the file system. >> >> When I upload a file larger than 16 MB an error page is shown with the error message: >> Bad Request ZnEntityTooLarge >> >> I found that by using ZnConstants>>maximumEntitySize: I can increase this limit. However, I want to catch this in the image and show an error message to the user. >> >> I tried wrapping receiveFile: and renderContentOn: with an on:do: exception handler for ZnEntityTooLarge. However, neither works. It seems that the error happens before renderContentOn: is even called. I searched the mailing lists but did not come up with an answer. >> >> How can I achieve this in Seaside? Any help would be much appreciated. >> >> Cheers, >> Bernhard >> _______________________________________________ >> seaside mailing list >> [email protected] >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > _______________________________________________ seaside mailing list [email protected] http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside