使用grails和jquery上传文件

时间:2015-06-18 08:22:24

标签: jquery grails

我有一个包含多个输入以及doc或pdf文件上传的表单。

//Multiple input fields are here then upload ->
<div class="controls">
    <div class="fileupload ${ person?.attachment ? 'fileupload-exists' : 'fileupload-new' }" id="attachment" data-provides="fileupload" data-name="attachment">
        <span class="btn btn-file">
            <span class="fileupload-new">Add</span>
            <span class="fileupload-exists">Change</span>
            <input type="file" />
        </span>
        <span class="fileupload-preview"></span>
        <a href="#" class="close fileupload-exists" data-dismiss="fileupload" style="float: none">×</a>
    </div>
</div>

表单随jquery提交

$(document).on('click', "#submit", function () {
    //TODO Take the chosen file and upload it with form data
    //Taking data from form and contructing a object and posting it with ajax
}

在按下#submit时,我无法弄清楚如何使用表单上传doc / pdf文件。

客户端上传取自here

我查看了g:formg:uploadForm,但我真的不想使用它们,因为它们似乎刷新页面和/或重定向用户。

1 个答案:

答案 0 :(得分:1)

使用以下功能在表单提交时使用ajax发送文件 在视图结束

        function formSubmit(){

           var formData=new FormData($('form#create-form')[0]);
            $.ajax({url: 'createAttachment', type:'POST', data: formData, processData: false,contentType: false,dataType: 'script',success:function(result){

            }});
            return false
        }

在控制器端使用下面的代码来访问文件对象

def createAttachment = {
    List attachmentsFiles=[]
    request.fileNames.each {
        def singleFile = request.getFile(it)
        if(singleFile.getOriginalFilename()) {
            attachmentsFiles.add(singleFile)
        }
    }
    attachmentsFiles.each { file ->
       println(file.getOriginalFilename())
    }
  //put your code here
}

attachmentsFiles 将包含所有上传的文件。