我有一个包含多个输入以及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:form
和g:uploadForm
,但我真的不想使用它们,因为它们似乎刷新页面和/或重定向用户。
答案 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 将包含所有上传的文件。