2010-11-24 95 views
3

我的Grails應用程序有一個上傳表單類似如下:的Grails:驗證文件上傳

<g:uploadForm action="save" > 
    <input type="file" name="csvfile" /> 
    <!-- some other inputs ... --> 
    <g:submitButton name="upload" value="Save" /> 
</g:uploadForm> 

我不想存儲在域對象的文件內容,但希望他們直接與轉移到文件transferTo方法。我如何在這種情況下執行驗證(也許使用命令對象)?

回答

3

當您上傳一個文件,你可以做這樣的事情在你的控制器:

def myAction = { 
    def file = request.get('csvfile') 
    file.transferTo(new File('/path/to/local/file')) 
} 

我不理解你的問題和之間的連接是如何在你的表單輸入將映射到一個域對象。如果您不希望域上的文件內容,則不應爲其定義域字段。

如果您可以向我們提供您的域名,我們可以更好地瞭解您要完成的任務。

+0

域類僅包含文件名,但在我的示例中無關緊要。我想知道如何確保用戶使用表單發送所需的文件。 – deamon 2010-11-24 21:10:28

0

這有點蠻力,但只需使用@Rob Hruska提供的示例代碼並查找操作中的文件即可。它不是特別優雅,但它功能強大且簡單,並且不會將文件放入您的域對象中。