shanwar
shanwar

Reputation: 329

request.getFile() is returning null object

I am trying to implement a method to upload a file to specific local directory.

I have this in my view:

<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>

And this is in my controller action:

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

This is the error I am getting: Cannot invoke method transferTo() on null object. Stacktrace follows:

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

This looks like my form is not bring submitted properly. Am I missing some logic to do this?

Upvotes: 1

Views: 1984

Answers (2)

Kamal kannan
Kamal kannan

Reputation: 253

Change form type as 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>

Now you can get file in upload action.

Upvotes: 2

Joe
Joe

Reputation: 1219

I have used:

g:uploadForm

instead of:

g:form

when doing a file upload.

g:uploadForm documentation

Upvotes: 0

Related Questions