Grails 文件上传问题

2023-11-24

我正在尝试模拟 grails 网站的文件上传代码,但遇到了一些问题。我使用的代码与找到的相同here。这是我的代码:

    <g:form action="upload" method="post" enctype="multipart/form-data">
        <input type="file" name="myFile" />
        <input type="submit" value="Upload" />
    </g:form>

and

def upload = {
    def f = request.getFile('myFile')
    if(!f.empty) {
      flash.message = 'success'
    }    
    else {
       flash.message = 'file cannot be empty'
    }
}

我在运行时收到以下错误:

Message: No signature of method: org.mortbay.jetty.Request.getFile() is applicable for argument types: (java.lang.String) values: {"myFile"}
Caused by: groovy.lang.MissingMethodException: No signature of method: org.mortbay.jetty.Request.getFile() is applicable for argument types: (java.lang.String) values: {"myFile"}

看来和Spring的一些配置有关。 Spring 似乎没有注入MultipartHttpServletRequest,所以我的请求没有合适的方法。我刚刚使用创建了这个应用程序grails create-app。我没有修改resources.groovy 文件。我正在使用 grails 1.0.3。

任何帮助深表感谢。 grails 网站使这一切看起来非常简单。


问题解决了!

我使用示例代码将文件上传到 Grails 的方式可能与原作者的意图不同。问题是当upload调用控制器的方法,有时是为了上传页面的原始渲染。该方法中的请求不是 MultipartHttpServletRequest 类型。当我对要上传的文件进行 POST 时,Spring 做了正确的事情并将我的请求更改为 MultipartHttpServletRequest。所以,我需要在我的update在使用我的请求(例如 MultipartHttpServletRequest)之前的控制器方法。

if(request instanceof MultipartHttpServletRequest)
{
  MultipartHttpServletRequest mpr = (MultipartHttpServletRequest)request;  
  CommonsMultipartFile f = (CommonsMultipartFile) mpr.getFile("myFile");
  if(!f.empty)
    flash.message = 'success'
  else
   flash.message = 'file cannot be empty'
}   
else
  flash.message = 'request is not of type MultipartHttpServletRequest'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Grails 文件上传问题 的相关文章

随机推荐