nightingale2k1
nightingale2k1

Reputation: 10315

how to upload multiple files in grails

I have a form that contains multi file upload like this one

<g:form name="legalActionForm" controller="legalAction" action="save" enctype="multipart/form-data">
<input type='file' name='documentFile'/> <input type='text' name='documentDate'/>
<input type='file' name='documentFile'/> <input type='text' name='documentDate'/>
<input type='file' name='documentFile'/> <input type='text' name='documentDate'/>
<input type='file' name='documentFile'/> <input type='text' name='documentDate'/>
<input type='file' name='documentFile'/> <input type='text' name='documentDate'/>
<input type='submit' value='update'/>
</g:form>

user can add more if needed ... how to get each file using iterators ?

if only one file I use request.getFile('documentFile'); but if I tried with request.getFileNames().each{obj -> println("${obj}"); } I only got the first one ..

Upvotes: 7

Views: 7659

Answers (3)

You try with this one

request.fileNames.each {
   MultipartFile file = request.getFile(it)
   //File file = request.getFile(it)
   //do what you want
}

Upvotes: 3

Cassio Landim
Cassio Landim

Reputation: 1946

request.getMultiFileMap().documentFile.each {
    println it.originalFilename
}

Upvotes: 9

Jinesh Parekh
Jinesh Parekh

Reputation: 2141

You want to do it like so

   <g:form action="save" method="post" enctype="multipart/form-data" >  
   <input type='file' name='documentFile.1' />  
   <input type='file' name='documentFile.2' />  
   <input type='file' name='documentFile.3' />  
   </g:form>  

In your controller

def files = []  
params.documentFile.each {  
  files.add(it.value)  
 }  

Upvotes: 5

Related Questions