Hi again, apologies for multiple posts.

I would actually really be interested in a file type validator as I am
currently doing this on the server too - in the onValidateFromX, which
fires after the upload has happened.
I'll wait for some feedback on this one before creating a file type
validator, but I will do that too (taking into account any notes on
this one).
Perhaps these two together could be added to Tapestry-Uploads or as a
separate dependency. I would think that any site which has upload
functionality wants to have something to stop massive files being
uploaded, and I would also expect that clearing the form is
problematic for most of those sites, so i'm still a bit surprised this
hasn't been an issue for anyone else.

Thanks,
Steve

On 11 June 2015 at 21:51, Stephen Nutbrown <steves...@gmail.com> wrote:
> Hello!
>
> I am back, and with a working solution. Before using this solution for
> any of your own projects, please take the following into
> consideration:
>
> - I am not an experienced javascript developer, i've done my best to
> hack something together based on tapestrys own validation.js and the
> stackoverflow post which was linked to.
>
> - I haven't tested it on all browsers, but it should be supported on
> all modern browsers (as per the other article I linked to), and I have
> set the clientside validation to accept it if the required support
> isn't there - the server side validation will catch it but it's more
> efficient to catch it client side.
>
> - I have absolutely no clue how to package this up into a .jar file to
> make it easier to distribute, ideally it would be nice if this is
> taken as a proof of concept and added to tapestry-upload, or if it was
> made into a .jar which was distributed on maven - unfortunately this
> would be a bit of a learning curve for me and i'm so busy it's
> unbelievable. Of course if you have the time to take my code and do
> that with it, please do and share it - do with it whatever you want.
> One day I would like to be a Tapestry contributor, but it'll take me a
> while to be ready.
>
> That said, here it is (I'm sure Thiago or someone else will probably
> correct some parts if it's wrong):
>
> - maxfilesize.js (attached) belongs in src/main/resources/META-INF/modules
>
> - MaxUploadSize.java belongs where you want to place it, I put it in a
> validators package, so for me it is
> src/main/java/com/football/news/validators, but for you it will be
> src/main/java/your/project/package
>
> - I added the following line to my app.properties
> (src/main/webapp/WEB-INF/app.properties), perhaps there is a better
> properties file for this:
> data-validate-filesize=The file size is too big.
>
> - I contributed the validator in my AppModule, like this:
>
> public static void
> contributeFieldValidatorSource(MappedConfiguration<String, Validator>
> configuration, final JavaScriptSupport javaScriptSupport) {
> configuration.add("fileSizeValidator", new
> MaxUploadSize(Integer.class, UploadedFile.class,
> "data-validate-filesize", javaScriptSupport));
> }
>
> I'm trying to help others by uploading this, but please take my
> solution with a pinch of salt, some parts of tapestry are still some
> unknown "magic" to me.
>
> Any feedback is really appreciated, it will help people seeing this in
> future and will also help me to update my local version. I would think
> a filetype validator similar to this one would also be possible.
>
> Thanks,
> Steve
>
> On 10 June 2015 at 08:52, Stephen Nutbrown <steves...@gmail.com> wrote:
>> Hi,
>>
>> Yes, copying and adapting one for the validators is exactly what I did
>> in the end using the twitter library they have. However, I found it a
>> bit difficult to do because the current validator seems to use a
>> coffee script (Something i'm not familiar with, I struggle with JS as
>> it is!). So I ended up getting the validator.js from running my T5
>> program and downloading it (I'm sure there is a better way, but  I
>> couldn't find this .js file otherwise), and then I had to figure out
>> how to use require.js properly as I wasn't used to it. I'm sure now I
>> know how to do it, it'll be easy enough, but when I did the twitter
>> one it actually took me a fair bit of time to figure out how to do it
>> - but I got there in the end.
>>
>> Perhaps when I make this i'll note down some steps and I can post them
>> somewhere to make it easier for other people. It might be a few days
>> until I get the time, but i'll certainly do that.
>>
>> Thanks,
>> Steve
>>
>>
>>
>> On 10 June 2015 at 01:38, Thiago H de Paula Figueiredo
>> <thiag...@gmail.com> wrote:
>>> On Tue, 09 Jun 2015 19:01:33 -0300, Stephen Nutbrown <steves...@gmail.com>
>>> wrote:
>>>
>>>> Hi,
>>>
>>>
>>> Hi!
>>>
>>>>
>>>> I saw some posts on StackOverflow about validating files using
>>>> JavaScript's
>>>> files api (it looks fairly new so may not be suitable for projects which
>>>> need to support old browsers):
>>>>
>>>>
>>>> https://www.google.co.uk/url?sa=t&source=web&rct=j&ei=omB3Vb_MKKi07QbRvoDYBQ&url=http://stackoverflow.com/questions/3717793/javascript-file-upload-size-validation&ved=0CB0QFjAA&usg=AFQjCNGck_7qB8b7VzFExHQM72vzF6JxZA&sig2=XgAbDcP-E8-daXfAyP0tEg
>>>
>>>
>>> Interesting! Thanks! I learned something new today . . .
>>>
>>>> Some time ago I implemented a client side twitter validator to check the
>>>> length of text field values (it gets a bit complicated because links
>>>> count> as fewer characters etc).
>>>
>>>
>>> Twitter has a JS library that does this character counting, so it's just a
>>> matter of copying and adapting the MaxLength validator from Tapestry.
>>>
>>>> I can have a go at doing the same for the
>>>> fileuploader and can put whatever I make up on github somewhere.
>>>
>>>
>>> Don't forget to post an announcement here. :)
>>>
>>>> It won't
>>>> work on old browsers as per:
>>>>
>>>> https://www.google.co.uk/url?sa=t&source=web&rct=j&ei=Y2F3Vbf0IIet7AarkoLgBA&url=http://caniuse.com/fileapi&ved=0CB0QFjAA&usg=AFQjCNEufMjex_NEpHKkWV7k-pakFWDNJQ&sig2=-hTtFzGroBPZc9w0v1bGIA
>>>>
>>>> I'm a bit surprised that this doesn't exist,
>>>
>>>
>>> What's "this"? :)
>>>
>>>
>>> I thought it would and so I
>>>>
>>>> expected that I was doing something horribly wrong. I'll come back when I
>>>> have it working as it may help others.
>>>>
>>>> Thanks,
>>>> Steve
>>>>  On 9 Jun 2015 20:06, "Thiago H de Paula Figueiredo" <thiag...@gmail.com>
>>>> wrote:
>>>>
>>>>> On Tue, 09 Jun 2015 14:39:54 -0300, Stephen Nutbrown
>>>>> <steves...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>  Hi Thiago,
>>>>>>
>>>>>>
>>>>>
>>>>> Hi!
>>>>>
>>>>>
>>>>>> That's interesting. Perhaps the documentation wants updating. It says:
>>>>>> "Note the importance of return this;. A void event handler method, or
>>>>>> one that returns null, will result in the FileUploadException being
>>>>>> reported to the user as an uncaught runtime exception."
>>>>>>
>>>>>> https://tapestry.apache.org/uploading-files.html
>>>>>>
>>>>>
>>>>> Not returning "this" isn't just for uploading exceptions: it's for all
>>>>> event handler methods, so I don't think it makes sense to put this
>>>>> warning
>>>>> in uploading-files.html.
>>>>>
>>>>> In your original code, returning "this", if you annotated your field with
>>>>> @Persist(PersistenceConstants.FLASH), the message would appear. In this
>>>>> very case, it appears to be the right thing to do (return "this"), as
>>>>> otherwise Tapestry still considers the event as not handled and the
>>>>> generic
>>>>> exception handling is used.
>>>>>
>>>>> --
>>>>> Thiago H. de Paula Figueiredo
>>>>> Tapestry, Java and Hibernate consultant and developer
>>>>> http://machina.com.br
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>>>>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>>>>
>>>>>
>>>
>>>
>>> --
>>> Thiago H. de Paula Figueiredo
>>> Tapestry, Java and Hibernate consultant and developer
>>> http://machina.com.br
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>>> For additional commands, e-mail: users-h...@tapestry.apache.org
>>>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to