我正在使用Spring MVC。我想上传文件,但我的尝试不起作用。这是我的最后一次尝试。 我调试了,我正确地获取了文件对象,并在ajax中序列化了表单。
我明白了这一点,我做的事情很糟糕。
POST http://localhost:8080/upload/testCase 400(错误请求)
如何在控制器上获取表单数据和文件?
HTML:
<input id="testName" class="form-control" name="testName" placeholder="Insert a name for the test case">
<input type="file" name="fileUpload" id="fileUpload" class="hide"/>
的Javascript
$(document).ready(function () {
var file = new FormData();
$('#fileUpload').change(function () {
file.append('file',$('#fileUpload')[0].files[0]);
console.log($('#fileUpload')[0].files[0]);
});
$('#btnSubmit').click(function (e) {
e.preventDefault();
var data = $('#creationForm').serialize();
console.log(data + file);
$.ajax({
type: 'post',
url: '/upload/testCase',
data: {data: data, file: file},
processData: false,
success: function (result) {
},
error: function () {
}
});
return false;
});
});
Controller Java
@RequestMapping(value = "/upload/testCase" , method = RequestMethod.POST)
public @ResponseBody String uploadTestCase(@RequestParam("data") String data, @RequestParam("file") File file ) {
//TestCases.upload(file);
System.out.println(data + file);
return "";
}
后端
public static void upload(MultipartHttpServletRequest request) {
//1. get the files from the request object
Iterator<String> itr = request.getFileNames();
MultipartFile mpf = request.getFile(itr.next());
System.out.println(mpf.getOriginalFilename() +" uploaded!");
}