user2488166
user2488166

Reputation: 61

Couldn't upload file at any cost in grails

I am new in Grails. I tried for several times to upload a file. But failed. I am using grails 2.3.11 . And In my config.groovy file, I already include

grails.web.disable.multipart=true

I didn't add any dependency in BuildConfig for file uploading. I need it to solve badly. I am giving Code in below

GSP code :

<g:uploadForm action="upload" enctype="multipart/form-data" useToken="true">
        <fieldset class="form">
            <input type="file" name="file" />
        </fieldset>
        <fieldset class="buttons">
            <g:submitButton name="upload" class="save" value="Upload" />
        </fieldset>
    </g:uploadForm>

My Controller code:

 def file = request.getFile('file')

I also tried with this piece of code :

MultipartRequest multipartRequest =  request as MultipartRequest
    def file = multipartRequest.getFile('file')
    if (file){
      flash.message = "File found!!"
    } else {
      flash.message = "File NOT found.  :-( "
    }
    redirect action:'list'

But each and everytime I got the same error :

groovy.lang.MissingMethodException: No signature of method:
    org.apache.catalina.core.ApplicationHttpRequest.getFile()
    is applicable for argument types: (java.lang.String) values: [file]
    Possible solutions: getXML(), getPart(java.lang.String), 
    getAt(java.lang.String), getAt(java.lang.String), getLocale(), getInfo()

How can solve this problem? Is there any complete example of file uploading?

Upvotes: 0

Views: 720

Answers (1)

Sandeep Poonia
Sandeep Poonia

Reputation: 2188

You should set grails.web.disable.multipart = false inside config.groovy. This means that you want to enable multipart requests to your server. And inside your controller:

String content = request.getContentType()
if (content.contains("multipart/form-data") || (request instanceof MultipartHttpServletRequest)) {
    MultipartFile uploadedFile = request.getFile('file')
    if (!uploadedFile) {
        flash.message = "No attachment found for upload!"
    }else{
        flash.message = "File uploaded successfully."
    }
} else {
    flash.message = "Unable to upload file, Bad Request!")
}

Upvotes: 2

Related Questions