2012-09-06 102 views
-1

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

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这是输出:

[email protected]9d32df9 

,但是当我尝试调用getOriginalFilename()f我收到以下错误:

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

我也打印出来file从保存功能和输出也是:

[email protected]9d32df9 

那么为什么我会收到错误?

回答

1

而不是重定向,你可以调用你的另一个函数吗?重定向将发出一个http重定向文件作为param而不需要。

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

然后:

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

在你parsePropertyFile动作你没有得到一个文件对象,你从params得到的字符串。就像在您的save动作中一样,您需要做

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