Spring mvc ajax文件上传导致415(不支持的媒体类型)
Posted
技术标签:
【中文标题】Spring mvc ajax文件上传导致415(不支持的媒体类型)【英文标题】:Spring mvc ajax file upload leading to 415 (Unsupported Media Type) 【发布时间】:2015-07-21 15:52:28 【问题描述】:我正在尝试使用 jquery ajax 方法进行文件上传。但它会导致客户端出现 415(不支持的媒体类型)错误。但使用非 ajax 请求我的代码工作正常。
我的控制器代码。
@RequestMapping(value = "/imageUpload", headers = "content-type=multipart/*", method = RequestMethod.POST, consumes = "application/json")
public @ResponseBody
String uploadImage( @RequestParam("fileData") MultipartFile multipartFile, HttpServletRequest request )
// statements
我的浏览页面
<form id="uploadForm" action="imageUpload" method="post" enctype="multipart/form-data">
<div>
<input type="file" id="fileData" name="fileData" />
<input type="submit" id="submitContent" value="upload" />
</div>
</form>
和 ajax 调用。
$("#uploadForm").submit(function (e)
e.preventDefault();
var $form = $("#uploadForm");
$.ajax(
type: $form.attr('method'),
url: $form.attr('action'),
data: $form.serialize(),
dataType : 'json',
enctype: 'multipart/form-data',
processData: false,
success: function(msg)
$( "#editor" ).append(msg);
,
error: function(XMLHttpRequest, textStatus, errorThrown)
alert("Status: " + XMLHttpRequest); alert("Status: " + textStatus); alert("Error: " + errorThrown);
);
);
我尝试了几件事,例如设置 contentType:false 。 因此,如果需要,请建议我进行任何更改。
【问题讨论】:
【参考方案1】:看看这个Sending files using a FormData object
文件元素中的数据未序列化,请使用new FormData()
初始化数据,然后添加您的表单元素,包括data
元素。
此代码将起作用
$("#uploadForm").submit(function(e)
e.preventDefault();
var $form = $("#uploadForm");
var fd = new FormData($(this)[0]);
console.info(fd);
$.ajax(
type : 'POST',
url : $form.attr('action'),
data : fd,
cache : false,
processData : false,
contentType : false,
success : function(response)
console.info(response);
,
error : function(XMLHttpRequest, textStatus, errorThrown)
console.info("Status: " + XMLHttpRequest);
alert("Status: " + textStatus);
alert("Error: " + errorThrown);
);
);
要添加其他表单变量,请使用fd.append(...)
【讨论】:
以上是关于Spring mvc ajax文件上传导致415(不支持的媒体类型)的主要内容,如果未能解决你的问题,请参考以下文章
Spring MVC中传递json数据时显示415错误解决方法
POST JSON 失败,出现 415 Unsupported media type, Spring 3 mvc