Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java springmvc-Ajax文件上传&x27;行不通_Java_Ajax_Spring_Spring Mvc - Fatal编程技术网

Java springmvc-Ajax文件上传&x27;行不通

Java springmvc-Ajax文件上传&x27;行不通,java,ajax,spring,spring-mvc,Java,Ajax,Spring,Spring Mvc,我正在尝试使用AJAX和SpringMVC动态上传一个文件 以下是我正在做的: Javascript函数: function initQwacCertificate(){ $('#qwac').on('change', function(){ var formData = new FormData(); var file = $('#qwac')[0].files[0]; formData.append("myFileKey", file);

我正在尝试使用AJAX和SpringMVC动态上传一个文件

以下是我正在做的:

Javascript函数:

function initQwacCertificate(){
  $('#qwac').on('change', function(){
      var formData = new FormData();
      var file = $('#qwac')[0].files[0];

      formData.append("myFileKey", file);

      $.ajax({
          url : postQwac,
          type : 'POST',
          data : formData,
          enctype : 'multipart/form-data',
          contentType : false,
          cache : false,
          processData : false,
          success : function(response) {},
      });
  });
};
@PostMapping(value = "/extractQwacCertificate", consumes = { "multipart/form-data" })
        ExtractedQwacCertificate extractQwacCertificate(@RequestParam("myFileKey") MultipartFile uploadedFile) throws IOException, CertificateException {
            //MyStuff
}
Java控制器:

function initQwacCertificate(){
  $('#qwac').on('change', function(){
      var formData = new FormData();
      var file = $('#qwac')[0].files[0];

      formData.append("myFileKey", file);

      $.ajax({
          url : postQwac,
          type : 'POST',
          data : formData,
          enctype : 'multipart/form-data',
          contentType : false,
          cache : false,
          processData : false,
          success : function(response) {},
      });
  });
};
@PostMapping(value = "/extractQwacCertificate", consumes = { "multipart/form-data" })
        ExtractedQwacCertificate extractQwacCertificate(@RequestParam("myFileKey") MultipartFile uploadedFile) throws IOException, CertificateException {
            //MyStuff
}
所有这些东西在我的JS控制台中返回400错误,我无法理解:

所需的请求部分“myFileKey”不存在

但对我来说,这个“myFileKey”是存在的!有些事情我做得不对,但我不知道是什么!有人知道怎么了吗


谢谢

您可能没有注册
StandardServletMultipartResolver
(或者在Servlet3.0之前注册
CommonMultipartFile
)。没有MultipartResolver,Spring不知道如何从请求中提取文件

对于servlet 3.0,您需要将以下内容添加到dispatcher servlet中:

public class MainWebAppInitializer implements WebApplicationInitializer {

    private String TMP_FOLDER = "/tmp"; 
    private int MAX_UPLOAD_SIZE = 5 * 1024 * 1024; 

    @Override
    public void onStartup(ServletContext sc) throws ServletException {

        ServletRegistration.Dynamic appServlet = sc.addServlet("mvc", new DispatcherServlet(
          new GenericWebApplicationContext()));

        appServlet.setLoadOnStartup(1);

        MultipartConfigElement multipartConfigElement = new MultipartConfigElement(TMP_FOLDER, 
          MAX_UPLOAD_SIZE, MAX_UPLOAD_SIZE * 2, MAX_UPLOAD_SIZE / 2);

        appServlet.setMultipartConfig(multipartConfigElement);
    }
}
然后注册多部分解析器(给出java配置示例):