当前位置: 首页 > 知识库问答 >
问题:

Grails 3上载文件限制大小

金晨
2023-03-14

我在做什么,发生了什么?

我正在尝试上载grails中的文件,并将其删除。完成后,我仍然面临一个问题,即文件大小太大。例外情况如下:

Caused by: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: 
the request was rejected because its size (3553808) exceeds the configured maximum (128000)

我尝试和结果:

我发现这个问题之前问过,答案是放一些配置变量:

grails:
    controllers:
        upload:
            maxFileSize: (10 * 1024 * 1024)
            maxRequestSize: (10 * 1024 * 1024)

但仍然会出现同样的错误。我还尝试添加一些依赖项,如这里所述。或者关闭IDE并重建。什么都解决不了。

有人面对这个问题并能解决它吗?

共有2个答案

史高阳
2023-03-14

以下与grails 3.2及更高版本的工作对我来说很好

我们将允许上传25MB文件。

25*1024*1024=26.214.400字节

我的grails-app/conf/application。yml

grails:
 controllers:
  upload:
    maxFileSize: 26214400
    maxRequestSize: 26214400

我的<代码>我的。gsp文件

<g:form action="saveImage" enctype="multipart/form-data" method="POST">

    <input type="file" placeholder="Select file" name="file">

    <g:submitButton value="Upload File"/>

</g:form>

我的控制器动作

def saveImage(){
def fileName = ''
def uploadedFile = request.getFile('file')

if (uploadedFile)
    if (!uploadedFile.empty) {
        try {

            int dot = uploadedFile.originalFilename.lastIndexOf('.');
            def fileExt = uploadedFile.originalFilename.substring(dot + 1);
            fileName = ("myFile." + fileExt).toString()
            def basePath = ''
            if (Environment.current == Environment.PRODUCTION) {
                basePath ='/var/local/prj/uploads/' // this works with production and tested on Ubuntu OS
            } else {
                basePath = grailsApplication.mainContext.servletContext.getRealPath('/uploads/') // this will take your project directory path Project\src\main\webapp\uploads folder
            }
            uploadedFile.transferTo(new File(basePath + fileName))
        } catch (Exception e) {
            e.printStackTrace()
        }
    }
    // Your redirect code here
}

下载文件操作

def file = new File("Your file path")
if (file.exists()) {
    response.setContentType("application/octet-stream") // or or image/JPEG or text/xml or whatever type the file is
    response.setHeader("Content-disposition", "attachment;filename=\"${file.name}\"")
    response.outputStream << file.bytes
} else 
    render "File does not exist!"

希望这对你有帮助

竺和洽
2023-03-14

问题出在cofig变量的分配上。我在没有运算符的情况下分配它们:

        maxFileSize: 10485760
        maxRequestSize: 10485760

而不是:

        maxFileSize: (10 * 1024 * 1024)
        maxRequestSize: (10 * 1024 * 1024)

这就是我解决问题的方法。

 类似资料:
  • 问题内容: 我目前正在实现使用jersey rest上传文件的功能。我想设置一个允许的最大文件大小,这对我来说似乎是很常见的要求。 我的第一种方法是使用Jerseys FormDataContentDisposition,它应该包含我可能需要的有关文件的所有信息。但是似乎缺少所有信息,除了文件名,包括文件大小。 这是我的休息方法: 由于返回的大小始终为“ -1”,因此不起作用! 我使用一个非常简单

  • 问题内容: 我在Django应用中有一个表单,用户可以在其中上传文件。 如何设置上传文件大小的限制,以便如果用户上传的文件大于我的限制,则该表格将无效并且会引发错误? 问题答案: 此代码可能会帮助:

  • 问题内容: 我正在用multer创建一个简单的文件上传系统: 一切正常,文件被上传。唯一不起作用的是最大大小的限制。我这样做是为了检查文件onfileupload start的大小,如果文件过大,它将返回false。但是文件仍然只是上传。 似乎根本没有做任何事情。我尝试了一些东西,但是什么也没有。 我究竟做错了什么?使用multer上载时如何限制文件大小? 问题答案: 新的API 没有。如果要限制

  • 我正在使用vaadin(7.1.9)的upload组件,现在我的问题是我无法限制哪种文件可以与upload组件一起发送到服务器,但我没有找到任何用于此目的的API。唯一的方法是丢弃错误类型的文件后上传。 这是一种正确的方式吗?

  • 这是我的代码。我无法上传任何大小超过1 mb的文件,但我已将maxFileSize设置为50mb,请帮助,我做错了什么? 这是我的代码。我无法上传任何大小超过1 mb的文件,但我已将maxFileSize设置为50mb,请帮助,我做错了什么?

  • 本文向大家介绍javascript实现限制上传文件大小,包括了javascript实现限制上传文件大小的使用技巧和注意事项,需要的朋友参考一下 前言:   项目中经常用到需要上传文件、照片等功能,同时需要限制所上传文件的大小。很多插件都会采用后台请求验证,前端Js校验比较少。本篇介绍一个前端JS便捷判断上传文件大小的方法。 这个是比较好的 下面的代码不建议使用   代码很简单,关键就是怎么用JS拿