Grails文件上传 - 如何识别文件和/或内容类型?

时间:2011-02-16 16:56:35

标签: grails file-upload content-type file-type

我是Grails初学者,所以请耐心等待我。目前我很难操纵文件上传。据我所知,使用request.getFile()我可以轻松获得字节流。但在我这样做之前,我想检查以下内容:

  • 正在上传的文件的文件名
  • 正在上传的文件的文件大小
  • 正在上传的文件的内容/文件类型

如何做到这一点?在文件上传到服务器之前是否可能?我想阻止上传大文件。

3 个答案:

答案 0 :(得分:19)

所有信息都包含在您可以将请求参数转换为的CommonsMultipartFile对象中。

你可以这样使用它(在你的控制器中)

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

就阻止大型文件上传而言,可以通过在表单中​​添加以下内容来完成此操作:

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

但并非所有浏览器都支持它。另一个限制是容器上载限制(请参阅Tomcat配置或您正在使用的任何容器)。

除此之外,你必须检查尺寸并在控制器中拒绝它。

答案 1 :(得分:0)

或者您可以直接获取上传的文件属性,而无需使用CommonsMultipartFile。

def ufile = request.getFile(“fileInputName”)
的println(ufile.contentType)
的println(ufile.originalFilename)
的println(ufile.size)

答案 2 :(得分:0)

在服务器端,可以使用application.yml上的配置来限制整个应用程序的文件大小。

只需将此代码插入您的application.yml

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

请参阅:

Grails Guide - upload file

Grails3 file upload maxFileSize limit