我已经使用FormData()来上传ajax多个文件。在浏览器控制台中,显示文件列表但在控制器内部,列表显示为" [对象文件],[对象文件],[对象文件]"字符串格式。我如何解析它的价值? 我的javascript代码是:
var form = jQuery("#upload-form").find('input[type="file"]');
var picData = new FormData();
var fl = form.get(0).files.length;
var files = [];
for (var i = 0; i < fl; i++) {
files.push(form.get(0).files[i]);
console.log(files); //The list files is shown
}
picData.append("filesList[]",files);
jQuery.ajax({
url: 'upload/fileSave',
type: 'post',
dataType:'json',
data:picData,
enctype:"multipart/form-data",
contentType:false,
processData:false,
success: function(data) {
}
});
我做了JSON.parse(params.filesList [])但它只输出&#34;对象FIle&#34;串。在我发送给控制器之前,我应该在javascript中做些什么吗?
答案 0 :(得分:0)
通常在控制器内部,您可以从请求中获取文件:
File file = request?.getFile('fileName')
但是在您的代码中,有多个文件,因此您可以迭代每个文件
File file0 = request?.getFile('filesList[0]')
File file1 = request?.getFile('filesList[1]')
答案 1 :(得分:0)
您可以在控制器操作中进行如下操作:
for (filename in request.getFileNames()) {
MultipartFile fileContent = request.getFile(filename)
println "This file name" + filename
println "This file is file content" + fileContent
}
希望这会对你有帮助!!!。
答案 2 :(得分:0)
我做了一个解决方法。在将其传递给后端之前,我必须将每个文件放在键值对中。
jQuery('#file-submit-save').click(function(){
var form = jQuery("#upload-form").find('input[type="file"]');
var picData = new FormData();
var fl = form.get(0).files.length;
for (var i = 0; i < fl; i++) {
picData.append("files["+i+"]", form.get(0).files[i]);
}
picData.append('fileSize',fl);
jQuery.ajax({
url: '/fileupload/ajaxSave',
type: 'post',
dataType:'json',
data:picData,
enctype:"multipart/form-data",
contentType:false,
processData:false,
success: function(data) {
}
});
}
});
只有这样我才能将多部分文件与后端中的corressponding键相关联。