commonsMultipartFile麻烦

时间:2012-09-06 19:30:19

标签: grails file-upload groovy

您好我正在尝试在我的应用程序中实现文件上传,其中解析上传的文件并使用该信息在数据库中创建条目。

 def save = {

        def file = request.getFile("file");
        def filename = file.getOriginalFilename();
        def type = filename.split('\\.');

        if(!file.isEmpty()){
            if(type[1] == "properties"){

                redirect(action:"parsePropertyFile", params:params);
            }
        }
 }

def parsePropertyFile = {

      println "\n"
      println params.file;
      println "\n";

      def f = params.file;
      println f;

      def filename = f.getOriginalFilename();
      println filename;
}

当我打印出f时输出:

org.springframework.web.multipart.commons.CommonsMultipartFile@29d32df9

但是当我尝试在getOriginalFilename()上致电f时,我收到以下错误:

groovy.lang.MissingMethodException: No signature of method: 
java.lang.String.getOriginalFilename() is applicable for argument types: () values: []

我还从保存功能打印出file,其输出也是:

org.springframework.web.multipart.commons.CommonsMultipartFile@29d32df9

那我为什么会收到错误?

2 个答案:

答案 0 :(得分:1)

您可以只调用另一个功能,而不是重定向吗?重定向将发出一个http重定向,该文件作为param而不需要。

if(type[1] == "properties") {
  parsePropertyFile(file)
}

然后:

private def parsePropertyFile(def file) {
  String filename = file.getOriginalFilename();
  ...
}

答案 1 :(得分:0)

在您的parsePropertyFile操作中,您没有获得File对象,而是从params获取字符串。就像在save操作中一样,您需要执行

def f = request.getFile('file')
println f.getOriginalFilename()