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

Posted

技术标签:

【中文标题】Grails 文件上传 - 如何识别文件和/或内容类型?【英文标题】:Grails file upload - how to recognize file and/or content type? 【发布时间】:2011-06-28 12:22:26 【问题描述】:

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

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

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

【问题讨论】:

你想在前端还是后端做这个? 【参考方案1】:

或者你可以不使用CommonsMultipartFile直接获取上传的文件属性。

def ufile = request.getFile("fileInputName")
println(ufile.contentType)
println(ufile.originalFilename)
println(ufile.size)

【讨论】:

【参考方案2】:

从服务器端,可以使用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

【讨论】:

【参考方案3】:

所有信息都包含在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 配置或您正在使用的任何容器)。

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

【讨论】:

如果您使用的是简单的 html 表单提交,所有这些。 伟大而有用的答案。你刚刚为我节省了很多时间。谢谢:))

以上是关于Grails 文件上传 - 如何识别文件和/或内容类型?的主要内容,如果未能解决你的问题,请参考以下文章

Grails文件上传:视图渲染时如何设置输入文件的值

如何使用GoogleServiceAuthentication类将文件上传到Grails中的google存储?

Grails3文件上传maxFileSize限制

Grails 文件下载

Grails 4、Ubuntu 20、嵌入式 Tomcat - 请求中没有多部分文件

Grails 3 Web界面,通过表单将zip上传到服务器上的文件夹