grails
  • file-upload
  • 2010-12-10 17 views 6 likes 
    6

    多個文件我有一個包含多文件上傳這樣一個如何上傳Grails中

    <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

    的可能重複原因是您在使用`request.fileNames.each {}`時只收到第一個'documentFile',這是因爲您的名稱在您的表單中不是唯一的。 Jinesh的答案解決了這個問題。幾個月前當你問這個問題時,我也解決了這個問題。 – 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 
    } 
    
    相關問題