2010-12-10 2 views
6

У меня есть форма, которая содержит несколько файлов для загрузки как этогокак загружать несколько файлов в Грааль

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

пользователя может добавить больше, если нужно ... как получить каждый файл, используя итераторы?

если только один файл я использую request.getFile('documentFile'); , но если бы я попытался с request.getFileNames().each{obj -> println("${obj}"); } я только получил первый ..

+2

возможно дубликат [Как итерацию через загруженные файлы в Grails] (http://stackoverflow.com/questions/3710232/how-to-iterate-over-uploaded-files-in-grails) – 2010-12-10 16:41:08

+0

причина, по которой вы получили только первый «documentFile» при использовании `request.fileNames.each {}`, потому что ваши имена не уникальны в вашей форме. Ответ Джинеша фиксирует это; Я также обратился к этому, когда вы задали этот вопрос пару месяцев назад. – 2010-12-10 16:43:24

+0

@ nightingale2k1 новый ответ добавлен – 2014-03-25 08:58:09

ответ

4

Вы хотите сделать это как так

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

В контроллере

def files = [] 
params.documentFile.each { 
    files.add(it.value) 
} 
8
request.getMultiFileMap().documentFile.each { 
    println it.originalFilename 
} 
2

Вы пытаетесь с этим

request.fileNames.each { 
    MultipartFile file = request.getFile(it) 
    //File file = request.getFile(it) 
    //do what you want 
} 
Смежные вопросы