gpt4 book ai didi

java - jQuery Ajax文件上传:org. springframework.web.bind.MissingServletRequestParameterException:必需的字符串参数 'upload'不存在

转载 作者:行者123 更新时间:2023-12-02 13:04:49 24 4
gpt4 key购买 nike

我正在尝试上传文件,它在我的本地系统上运行,但在服务器中不起作用。

<form class="form-group row"  style="height:100px;" id="uploading" method="post" enctype="multipart/form-data">
<div class="col-md-10" align="center">
<div class="form-group row" align="center">
<label class="col-md-2 form-control-label"> File to upload:</label>
<div class="col-md-10" >
<div class="input-group">
<input type="file" class="filestyle" data-buttonName="btn-primary" name="upload" id="upload" accept="*"/>
</div>
</div>
</div>
<div class="form-group row" id="buttonzone">
<div class="col-sm-14">
<div class="input-group">
<button type="submit" class="btn btn-success" id="upload" style="margin-left: 96px;">
<i class="fa fa-cloud-upload"></i> Upload</button>
<button type="button" class="btn btn-danger" id="cancel" ><i class="fa fa-ban"></i> Cancel</button>
</div>
</div>
</div>
</div>
</form>


$("form#uploading").submit(function(){
var formData = new FormData($(this)[0]);
$.ajax({
url : '/uploadController/upload',
type: 'POST',
data: formData,
async: false,
beforeSend: beforeSendHandler,
success: function (data){
var msg=data.msg;
var obj=data.obj;
if(data.success == true){
$('#successmsg').html(msg);
$('.alert-success').show();
$('.alert-danger').hide();
setTimeout(function(){
$(".alert-success").alert('close');
}, 10000);
}else{
$('#errmsg').html(msg);
$('.alert-danger').show();
$('.alert-success').hide();
setTimeout(function(){
$(".alert-danger").alert('close');
}, 10000);
}
},
cache: false,
contentType: false,
processData: false
});
return false;
});

Java代码:

@RequestMapping(value = "/uploadController/upload",headers=("content-type=multipart/*"), method = RequestMethod.POST)
public @ResponseBody StatusResponse totxnsUpload(@RequestParam("upload") MultipartFile upload, HttpServletRequest request, HttpServletResponse response) throws IOException, NoSuchFieldException, SecurityException{
logger.debug(" file upload controller");
//my logic here
}

我在浏览器控制台中得到这个:

{
"timestamp":1495781126083,
"status":400,
"error":"Bad Request",
"exception":"org.springframework.web.bind.MissingServletRequestParameterException",
"message":"Required MultipartFile parameter 'upload' is not present",
"path":"/uploadController/upload"
}

但它在服务器外工作,我不知道问题是什么。

最佳答案

参数“upload”如@RequestParam("upload") MultipartFile upload是必需参数。如果它在某些系统中工作,则意味着它正在获取名为“upload”的参数。在您的情况下,它会失败,因为它不存在于请求中。

不过,您的表单中确实有一个名为 upload 的输入。但我可以看到您正在尝试使用 ajax 发送表单数据。您可以在浏览器开发工具网络选项卡中看到该请求吗?

同时在 totxnsUpload 方法中放置一个断点,看看是否收到两个表单提交请求(一个标准,一个使用 ajax)

出于调试目的,您可以在 Java 代码中将上传参数设置为可选,并替换 @RequestParam(value = "upload", required = false) MultipartFile upload

话虽如此。如果完全相同的代码在您的计算机上运行但在服务器上不起作用,您可能需要配置您的上下文。看看这个How to use HttpServletRequest#getParts() in a servlet filter running on Tomcat?

关于java - jQuery Ajax文件上传:org. springframework.web.bind.MissingServletRequestParameterException:必需的字符串参数 'upload'不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44195523/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com