&引用;MultipartException:当前请求不是多部分请求;尝试使用javascript+;阿贾克斯(来自邮递员)
我正在尝试创建一个web表单,允许将单个文件从浏览器上载到我自己的服务器 后端API是基于spring boot的,特定的控制器经过postman测试,运行良好。现在,当我尝试使用JavaScript和ajax对我的网站进行相同的操作时,我得到以下错误:&引用;MultipartException:当前请求不是多部分请求;尝试使用javascript+;阿贾克斯(来自邮递员),javascript,java,ajax,spring,multipartform-data,Javascript,Java,Ajax,Spring,Multipartform Data,我正在尝试创建一个web表单,允许将单个文件从浏览器上载到我自己的服务器 后端API是基于spring boot的,特定的控制器经过postman测试,运行良好。现在,当我尝试使用JavaScript和ajax对我的网站进行相同的操作时,我得到以下错误: 客户端:错误400和 服务器端: org.springframework.web.multipart.MultipartException:当前请求 不是多部分请求 我试过10个关于stackoverflow的其他问题的公认解决方案,但都没用。
@PostMapping("/add_users_from_csv")
public ResponseEntity<String> addUsersListFromCSVFile(@PathVariable String id, @RequestParam("file") MultipartFile file, @RequestParam("club") String clubId, @RequestParam("notifyByEmail") boolean notifyByEmail, @RequestParam("notifyBySMS") boolean notifyBySMS) throws UnauthorizedRequestException {
businessService.securityCheckID(id);
return clubService.addUsersListFromCSVFile(clubId, file, notifyByEmail, notifyBySMS);
}
@PostMapping(“/add\u users\u from\u csv”)
public ResponseEntity addUsersListFromCSVFile(@PathVariable字符串id、@RequestParam(“文件”)多部分文件、@RequestParam(“club”)字符串clubId、@RequestParam(“notifyByEmail”)布尔notifyByEmail、@RequestParam(“NotifyByMs”)布尔NotifyByMs)引发未经授权的请求异常{
businessService.securityCheckID;
返回clubService.addUsersListFromCSVFile(clubId、file、notifyByEmail、notifyBySMS);
}
客户:
<html>
<body>
<form name="uploadForm" id="fileUploadForm" method="POST" enctype="multipart/form-data">
<input type="file" id="file" name="file" value="Import"">
<input type="submit" value="Import" id="Import" />
</form>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script>
$('form[name="uploadForm"]').submit(function(event){
event.preventDefault();
var formData = new FormData($('#fileUploadForm')[0]);
formData.append('file', $('input[type=file]')[0].files[0]);
formData.append("club", "5cc5fd05569a720006169111");
formData.append("notifyByEmail", "true");
formData.append("notifyBySMS", "true");
$.ajax({
url: 'http://localhost:8090/business/5cc625ed3ba686000665f111/add_users_from_csv',
data: formData,
type: "POST",
contentType: false,
processData: false,
cache: false,
"headers": {
"Content-Type": "application/json",
"Authorization": "bearer 0278e739-fbe0-4e3d-9acf-57544b011111"
},
success : function(response){
alert(response);
},
error: function(xhr,status,errorThrown) {
alert(xhr.status);
}
});
return false;
});
</script>
</body>
</html>
您是否在bean中添加了多部分配置?我遵循了以下文章,并对我的项目进行了调整:。我没有看到任何“多部分配置”。此外,它与邮递员一起工作,这不意味着配置设置正确吗?您能解释一下您的问题吗?您将ajax请求的内容类型设置为“内容类型”:“应用程序/json”,请检查此链接:
<html>
<body>
<form name="uploadForm" id="fileUploadForm" method="POST" enctype="multipart/form-data">
<input type="file" id="file" name="file" value="Import"">
<input type="submit" value="Import" id="Import" />
</form>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script>
$('form[name="uploadForm"]').submit(function(event){
event.preventDefault();
var formData = new FormData($('#fileUploadForm')[0]);
formData.append('file', $('input[type=file]')[0].files[0]);
formData.append("club", "5cc5fd05569a720006169111");
formData.append("notifyByEmail", "true");
formData.append("notifyBySMS", "true");
$.ajax({
url: 'http://localhost:8090/business/5cc625ed3ba686000665f111/add_users_from_csv',
data: formData,
type: "POST",
contentType: false,
processData: false,
cache: false,
"headers": {
"Content-Type": "application/json",
"Authorization": "bearer 0278e739-fbe0-4e3d-9acf-57544b011111"
},
success : function(response){
alert(response);
},
error: function(xhr,status,errorThrown) {
alert(xhr.status);
}
});
return false;
});
</script>
</body>
</html>