2016-11-21 188 views
1

我想實現一個方法來上傳文件到特定的本地目錄。

我有這個在我看來:request.getFile()返回空對象

<g:form action="upload" enctype="multipart/form-data" useToken="true"> 

<span class="button"> 
    <input type="file" name="filepdf"/> 
    <input type="submit" class="upload" value="upload"/> 

</span> 

</g:form> 

而且這是在我的控制器動作:

def upload(){ 
      def f =request.getFile('filepdf') 
      File fileDest = new File(grailsApplication.config.vote4.userGuides.userGuidesDirectory) 
      f.transferTo(fileDest) 
    } 

這是我收到的錯誤:空對象上不能調用方法的transferTo()。 Stacktrace如下:

2016-11-21 18:52:24.559 [http-nio-8080-exec-6] ERROR org.grails.web.errors.GrailsExceptionResolver - NullPointerException occurred when processing request: [POST] /backDoor/upload - parameters: 
SYNCHRONIZER_TOKEN: ab3587c3-21b7-4618-b7c7-0a6db19867f0 
SYNCHRONIZER_URI: /backDoor/retrieveCustomerDocumentation 
Cannot invoke method transferTo() on null object. Stacktrace follows: 
java.lang.reflect.InvocationTargetException: null 
     at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.groovy:53) ~[spring-security-core-3.0.0.M2.jar:na] 
     at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.groovy:62) ~[spring-security-core-3.0.0.M2.jar:na] 
     at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.groovy:53) ~[spring-security-core-3.0.0.M2.jar:na] 
     at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.groovy:62) ~[spring-security-core-3.0.0.M2.jar:na] 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_79] 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_79] 
     at java.lang.Thread.run(Thread.java:745) [na:1.7.0_79] 
Caused by: java.lang.NullPointerException: Cannot invoke method transferTo() on null object 
     at com.net4.vote4.control.backdoor.BackDoorController$$EQ3DVuLN.upload(BackDoorController.groovy:238) ~[na:na] 
     ... 7 common frames omitted 

這看起來好像我的表格不能正確提交。我錯過了一些邏輯來做到這一點?

回答

1

變化形式類型uploadForm

<g:uploadForm action="upload" enctype="multipart/form-data" useToken="true"> 

    <span class="button"> 
    <input type="file" name="filepdf"/> 
    <input type="submit" class="upload" value="upload"/> 
    </span> 

</g:uploadForm> 

現在你可以在上傳操作文件。