I'm a Grails beginner, so please be patient with me. Currently I'm having hard times manipulating file uploads. As far as I understand using request.getFile()
I can easily get the stream of bytes. But before I do that, I want to check the following:
- file name of the file being uploaded
- file size of the file being uploaded
- content/file type of the file being uploaded
How can this be done? Is it even possible before the file is uploaded to the server? I would like to block uploading of large files.
From server side it is possible to use the configuration at
application.yml
to limit file size application wide.Just insert this code on your
application.yml
:See:
Grails Guide - upload file
Grails3 file upload maxFileSize limit
Or you can get uploaded file properties directly without using CommonsMultipartFile.
def ufile = request.getFile("fileInputName")
println(ufile.contentType)
println(ufile.originalFilename)
println(ufile.size)
All the information is contained in the
CommonsMultipartFile
object that you can cast your request parameter to.You can use it like that (in your controller)
As far as blocking large file uploads, this could be done by adding the following to your form:
but not all browsers will support it. The other limit is you container upload limit (see Tomcat configuration or whatever container you are using).
Other than that, you have to check the size and reject it in the controller.