2014-10-02 81 views
1

我想複製使用該請求或HttpServletRequest功能的多個文件。多個文件上傳在聖盃

我已經能夠循環通過我在那裏訪問的MultipartFile對象爲每個文件在控制器的行動所有選中的文件 - 這裏是動作代碼:

request.getFileNames().each{ 
    request.getFiles(it).each 
    { file -> 
     // loop through all files selected 
    println "name: $file.name Originalfilename: $file.originalFilename contentType: $file.contentType" 
     file.transferTo(new File(userDir, file))     
    } // eo for loop 
} // eo requect.getFiles().each.... 

我得到一個常規運行時錯誤該行的transferTo - 錯誤消息是:

找不到匹配的構造函數:java.io.File中(java.io.File中,org.springframework.web.multipart.commons.CommonsMultipartFile)

如果我註釋掉transferTo行的打印輸出行,循環會生成關於每個選定文件的正確的MultipartFile信息。

參見兩個文件輸出選擇這裏:

名:文件[] Originalfilename:換sale.gif的contentType:圖像/ GIF

名:文件[] Originalfilename:front.gif的contentType :image/gif

如何調用transferTo來執行復制?

-Mike

回答

0

如果你看一下文檔中的CommonsMultiPartFile,你會看到你的問題是,你正在構建你的文件的方式。

file.transferTo(new File(userDir, file)) 

應該是:

file.transferTo(new File(userDir, file.getOriginalFilename())) 

您需要訪問的文件originalFilename財產。

+0

工作正常 - 也嘗試過'file.originalFilename',但是失敗時出現了一個** groovy.lang.MissingMethodException **錯誤和消息:'沒有方法的簽名:org.springframework.web.multipart.commons.CommonsMultipartFile。 originalFilename()適用於參數類型:()values:[]可能的解決方案:getOriginalFilename()'。然而上面的打印行顯示正確的原始文件名 - 不知道爲什麼? – mikek 2014-10-02 13:35:46

+0

是否有可能對已傳遞給接收它的輸入html標記中設置的初始操作的不同操作的多部分文件對象運行請求命令。 我可以訪問重定向操作中的字符串 - **表單:[email protected]5d79259** 但我無法運行request.getFiles之類的請求命令 - 也如果我嘗試將其轉換爲MultipartFile,則失敗。 -mike – mikek 2014-10-03 14:21:05

+0

我不知道是否可以在重定向或從一個控制器轉發到另一個控制器後訪問文件上載。這是與原始問題不同的問題,應單獨發佈。另外,如果我的回答回答了你的第一個問題,那麼如果你接受它,這對他人會有幫助,如果這是一個很好的答案,那麼upvote也是值得讚賞的。 – 2014-10-03 14:25:03