当前位置:  开发笔记 > 程序员 > 正文

Grails文件上传问题

如何解决《Grails文件上传问题》经验,为你挑选了2个好方法。

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

    
        
        
    

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网站让这看起来如此简单.



1> anschoewe..:

问题解决了!

我使用示例代码将文件上传到Grails的方式与原作者可能想要的不同.问题是,当调用控制器的上传方法时,有时会出现上传页面的原始渲染.该方法中的请求不是MultipartHttpServletRequest类型.当我用我的文件上传POST时,Spring做了正确的事情并将我的请求改为MultipartHttpServletRequest.因此,在使用我的请求(如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'



2> Carleto..:

现在使用Grails 2.x使用:


     


def upload = {
    def file = request.getFile('file')
    assert file instanceof CommonsMultipartFile

    if(!file.empty){ //do something }
    else { //do something }
}

更干净,更简单.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有