我是Grails初学者,所以请耐心等待我。目前我很难操纵文件上传。据我所知,使用request.getFile()
我可以轻松获得字节流。但在我这样做之前,我想检查以下内容:
如何做到这一点?在文件上传到服务器之前是否可能?我想阻止上传大文件。
答案 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
请参阅: