2010-12-10 35 views
6

Tengo un formulario que contiene archivo de varias subir como éste usuariocómo cargar varios archivos en griales

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

puede añadir más si es necesario ... cómo obtener cada archivo utilizando iteradores?

si sólo hay un archivo que utilizo request.getFile('documentFile'); pero si he intentado con request.getFileNames().each{obj -> println("${obj}"); } sólo me dieron la primera ..

+2

posible duplicado de [Cómo iterar sobre los archivos cargados en Grails] (http://stackoverflow.com/questions/3710232/how-to-iterate-over-uploaded-files-in-grails) El –

+0

razón por la cual solo recibió el primer 'documentFile' cuando usa 'request.fileNames.each {}' es porque sus nombres no son únicos en su formulario. La respuesta de Jinesh corrige esto; También abordé esto cuando hiciste esta pregunta hace un par de meses. –

+0

@ nightingale2k1 nueva respuesta agregada –

Respuesta

4

Usted desea hacerlo al igual que

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

En su controlador

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

Cuando uso el atributo múltiple no puedo hacer que funcione. '' –

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

Esta es la solución correcta cuando se utiliza el atributo múltiple de la etiqueta de entrada. – Jake

2

Intenta con este

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