2012-09-06 136 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()