2011-12-29 93 views
1

我想實現grails的上傳代碼。當文件被我的控制器上處理我得到這個錯誤:如何處理CommonsMultipartFile

ERROR errors.GrailsExceptionResolver - Exception occurred when processing request: [POST] /com.jason.score/fileResource/uploads 
Stacktrace follows: 
groovy.lang.MissingMethodException: No signature of method: static org.hsqldb.types.Binary.storeMyFileMethod() is applicable for argument types: (org.springframework.web.multipart.commons.CommonsMultipartFile) values: [[email protected]a17db8] 
    at com.jason.score.FileResourceController$_closure4_closure6.doCall(FileResourceController.groovy:73) 
    at com.jason.score.FileResourceController$_closure4.doCall(FileResourceController.groovy:72) 
    at com.jason.score.FileResourceController$_closure4.doCall(FileResourceController.groovy) 
    at java.lang.Thread.run(Thread.java:662) 

我的控制器功能如下:

def uploads = { 
    Collection result = [] 
    Binary binary 
    request.getFileNames().each { 
     binary = Binary.storeMyFileMethod(request.getFile(it)) 
     result << [name: binary.getFileName(), size: binary.getFileSize()] 
    } 
    render result as JSON 
} 

我的看法是這樣的:

<g:form name="fileupload" url="[action:'uploads',controller:'fileResource']" method="POST" enctype="multipart/form-data"> 
      .... 
      <input type="file" name="files[]" multiple> 

    </g:form> 

誰能解釋發生了什麼問題以及我如何處理每個上傳的文件(可以是多個文件)?

+0

什麼是「二進制」,你在哪裏可以調用'storeMyFileMethod()'?錯誤表示該方法不存在(對於'org.hsqldb.types.Binary'),Internet似乎支持該方法。 – 2011-12-29 22:55:47

+0

另外,你可以詳細說明你的意思是「處理每個文件」? 「進程」可能意味着任何數量的東西:將其存儲到磁盤,將其保存到數據庫等。 – 2011-12-29 22:56:42

+0

感謝您的回覆。我試圖使用在這裏找到的jquery文件上傳插件:http://grails.org/plugin/jquery-file-upload。我只是試圖讓示例代碼工作。按照流程,我的意思是上傳文件,獲取文件大小/名稱並將其解析爲JSON響應。任何幫助都會很棒。 – jason 2011-12-29 23:00:45

回答

1

@jason你安裝了grails jquery插件嗎?如果是,你是在運行應用程序之前還是在運行應用程序之後執行該操作?確保classpath中的jquery插件並組織你的導入。通過錯誤消息,它看起來像jquery jar的不在classpath中,你的應用程序試圖使用你不應該用於文件上傳的org.hsqldb.types.Binary。

+0

做到了。謝謝 – jason 2011-12-30 06:30:06