我一直在尝试使用spring multipart请求上传文件。 我的控制器就像:
@RequestMapping(value = "/uploadDocuments")
@ResponseBody
public String upload(MultipartHttpServletRequest request,HttpServletResponse response) {
System.out.println("reached here.. ");
List<MultipartFile> files = request.getFiles("files");
System.out.println(files.size()+"size of the multipart file");
我正在使用ajax调用来加载我的文件。和文件正在添加如下:
var files = [];
files.push($('#files')[0].files[0]);
我不知道自己错过了什么。苦苦于获取服务中的文件数组。请帮忙。
我的客户端代码:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function() {
$('#submit').click(function() {
var formData = new FormData();
var files = [];
files.push($('#files')[0].files[0]);
files.push($('#files')[0].files[1]);
formData.append('files', files);
$.ajax({
url: 'http://localhost:8085/MyWar/services/uploadDocuments',
type: 'POST',
dataType: 'text',
data: formData,
timeout: 45000,
contentType: false,
processData: false,
maxFileSize: 2097152,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
error: function (jqXHR, status, err) {
alert('ERROR');
},
success: function (data) {
alert('SUCCESS');
}
});
});
});
</script>
</head>
<body>
<input type="file" id="files" multiple=""/>
<button id="submit">Submit</button>
</body>
</html>
答案 0 :(得分:0)
终于找到了办法。我试图发送多个文件
var files = [];
files.push($('#files')[0].files[0]);
files.push($('#files')[0].files[1]);
formData.append('files', files);
此方法的问题在于,在控制器端未收到添加了名称“files”的结果文件数组。 一些与此相关的有趣问题和网站: 1. http://dhruba.name/2008/12/27/implementing-single-and-multiple-file-multipart-uploads-using-spring-25/ 2. http://viralpatel.net/blogs/ajax-style-file-uploading-using-hidden-iframe/
现在,我改变了从客户端发送的参数,如:
formData.append('files_1', files[0]);
formData.append('files_2', files[1]);
,而不是文件数组,发送多个文件和附加表单数据帮助我。