gpt4 book ai didi

javascript - 当前请求不是 [org.springframework.web.multipart.MultipartHttpServletRequest] 类型

转载 作者:行者123 更新时间:2023-12-02 11:48:55 26 4
gpt4 key购买 nike

我正在尝试使用下面的方法上传文件。但我收到 java.lang.IllegalStateException: Current request is not of type [org.springframework.web.multipart.MultipartHttpServletRequest]: org.apache.catalina.connector.RequestFacade@1b04024。

当我调用 form.submit(); 时而不是 form.submit(function(){ 使用 ajax 调用其按预期工作。但我需要从 Spring Controller 返回一个字符串值并获取 JS 函数。下面的代码确实有效。

Angularjs 函数:

    function fnSubmitUploadForm(formData){
var iframe = $('<iframe name="postiframe" id="postiframe" style="display: none"></iframe>');
$("body").append(iframe);
var form = $('#upload');
form.attr("action", CONTEXT_PATH+"/uploadFile");
form.attr("method", "post");
form.attr("encoding", "multipart/form-data");
form.attr("enctype", "multipart/form-data");
form.attr("target", "postiframe");
form.attr("uploadfile", $('#uploadfile').val());
var input = $('<input type="hidden" name="filename"/>').val(formData);
input.appendTo(form);

form.submit(function(){
$.ajax({
url: form.attr('action'),
type: 'POST',
data : form.serialize(),
success: function(){
alert('form submitted.');
}
});
return false;
});
}

Spring Controller 方法:

    @RequestMapping(value="/uploadFile", method=RequestMethod.POST) 
public @ResponseBody String uploadFile(MultipartHttpServletRequest request, HttpServletResponse response){
try{
MultipartFile file =(MultipartFile) request.getFile("uploadfile");
String[] formData=request.getParameterValues("filename");

}
}

最佳答案

原因是您在js提交中使用了表单序列化,它无法序列化文件类型等表单属性!看看这个链接: FormData vs .serialize(), What is the difference?

关于javascript - 当前请求不是 [org.springframework.web.multipart.MultipartHttpServletRequest] 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48017798/

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