Spring Boot和jQuery文件上传:不支持的媒体类型
我试图用spring boot 1.2.0 REST控制器和jQuery ajax上传一个csv文件。 当我发送帖子请求时,我一直得到415:不支持的媒体类型错误。 这是我的表格:
<form id="upload_form">
<div id="message">
</div>
<br/>
<div class="row" id="upload-file-div" style="display: none">
<div class='col-sm-3'>
<label>Select File</label>
<input type="file" name="file">
</div>
<div class='col-sm-3'>
<input type="button" id="file-upload" class="btn btn-primary" value="Upload" onclick="uploadFile()"/>
</div>
</div>
</form>
这里是我上传文件的方法:
function uploadFile(){
var response = api.uploadCSV($("#upload_form"));
if(response.status === 'OK'){
$("#message").css('color', 'green');
}else{
$("#message").css('color', 'red');
}
$("#message").html(response.message);
}
这里是实际的jQuery POST:
upload: function (url, form, ignoreSuccess) {
var response = null;
if (!this.validate(form)) {
var array = form.serializeArray();
alert(array);
var formData = new FormData(form);
console.warn(formData);
$.ajax({
type: "POST",
url: API_PROXY + url,
data: formData,
cache: false,
contentType: false,
processData: false,
async: false,
beforeSend: function (request) {
if (api.getSession() !== null) {
request.setRequestHeader("Authorization", "Bearer " + api.getSession().bearer);
}
},
success: function () {}
}).done(function (msg) {
response = msg;
});
}
return response;
}
以下是我的控制器:
@RequestMapping(consumes = "multipart/form-data", method = RequestMethod.POST,
value = "/upload/twitter", produces = MediaType.APPLICATION_JSON_VALUE)
public Response<String> uploadCsv(CsvUploadModel form) {
//码
}
我在我的spring引导类中注释了MultipartConfigElement和MultipartResolver。 我使用的是spring boot 1.2.0。 当我用PostMan发送邮件请求(扩展名为Chrome)时,它按预期工作。 但是,当我尝试上述jQuery代码时,它会一直抛出不支持的媒体类型错误。
以下是我尝试过的事情:
任何人都可以帮助我吗? 提前致谢。
你可以在你的formData
附加你的文件输入; 需要做出以下改变:
这个:
<input type="file" name="file">
应该:
<input type="file" name="file" id="file">
在你的ajax代码中,这个:
var formData = new FormData(form);
console.warn(formData);
$.ajax({
type: "POST",
url: API_PROXY + url,
data: formData,
应该:
var formData = new FormData();
formData.add("file",$('#file')[0].files)
$.ajax({
type: "POST",
url: API_PROXY + url,
data: formData,
要么:
var formData = new FormData(form[0]);
$.ajax({
type: "POST",
url: API_PROXY + url,
data: formData,
链接地址: http://www.djcxy.com/p/8575.html
上一篇: Spring Boot and jQuery file upload : Unsupported media type