Grails file upload - how to recognize file and/or content type?

时光怂恿深爱的人放手 提交于 2020-01-22 12:18:07

问题


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.


回答1:


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)

def uploaded = {
    def CommonsMultipartFile uploadedFile = params.fileInputName
    def contentType = uploadedFile.contentType 
    def fileName = uploadedFile.originalFilename
    def size = uploadedFile.size
}

As far as blocking large file uploads, this could be done by adding the following to your form:

<INPUT name="fileInputName" type="file" maxlength="100000">

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.




回答2:


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)




回答3:


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:

grails:
  controllers:
    upload:
      maxFileSize: 3145728 # 3 * 1024 * 1024 = 3 MB The maximum file size
      maxRequestSize: 3145728 # The maximum request size

See:

Grails Guide - upload file

Grails3 file upload maxFileSize limit



来源:https://stackoverflow.com/questions/5019478/grails-file-upload-how-to-recognize-file-and-or-content-type

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!