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 文件上传 - 如何识别文件和/或内容类型?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用GoogleServiceAuthentication类将文件上传到Grails中的google存储?