Spring文件上传 - 获取预期的MultipartHttpServletRequest:是否配置了MultipartResolver?错误
Spring文件上传 - 获取预期的MultipartHttpServletRequest:是否配置了MultipartResolver?错误
我正在尝试在我的Angular web应用程序中使用angular-file-upload来实现多文件上传功能。目前,前端功能可以正常工作,但每次上传尝试都会抛出一个java.lang.IllegalStateException,java.io.IOException]: java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured?
异常。\n上传控制器定义为\n
@Controller @PropertySource("classpath:application.properties") public class FileUploadController { @Resource private Environment env; @RequestMapping(value = "/fileupload", method = RequestMethod.POST) @ResponseBody public ListfileUpload(@RequestParam("file") MultipartFile[] uploadFiles) throws IllegalStateException, IOException { //文件处理逻辑 } }
\n在我的AppConfig.java
类中,我声明了bean\n
@Bean public CommonsMultipartResolver commonsMultipartResolver(){ CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(); commonsMultipartResolver.setDefaultEncoding("utf-8"); commonsMultipartResolver.setMaxUploadSize(50000000); return commonsMultipartResolver; }
\n并通过以下方式启动web应用程序\n
@Override public void onStartup(ServletContext servletContext) throws ServletException { AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(AppConfig.class); servletContext.addListener(new ContextLoaderListener(ctx)); ctx.setServletContext(servletContext); ctx.refresh(); Dynamic servlet = servletContext.addServlet(SERVLET_NAME, new DispatcherServlet(ctx)); servlet.addMapping("/"); servlet.setLoadOnStartup(1); //servlet.setMultipartConfig(ctx.getBean(MultipartConfigElement.class)); }
\n我不认为这是由于我的Angular视图中缺少
在Spring文件上传过程中,可能会遇到"Expected MultipartHttpServletRequest: is a MultipartResolver configured?"的错误。这篇文章将介绍出现这个问题的原因以及解决方法。
在解决这个问题之前,我们需要在webmvc-context.xml文件中添加以下代码:
<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver"/>
这段代码将配置一个MultipartResolver实例,用于处理文件上传请求。如果没有配置MultipartResolver,Spring无法正确解析文件上传请求,从而导致"Expected MultipartHttpServletRequest: is a MultipartResolver configured?"错误的出现。
通过添加以上代码,我们为Spring配置了一个CommonsMultipartResolver实例。CommonsMultipartResolver是Spring提供的一个常用的MultipartResolver实现,它使用Apache Commons FileUpload库来处理文件上传请求。
配置完MultipartResolver后,Spring将能够正确解析文件上传请求,并将其转换为MultipartHttpServletRequest对象。这样,我们就能够在Controller中使用MultipartHttpServletRequest对象来获取上传的文件。
总结起来,解决"Expected MultipartHttpServletRequest: is a MultipartResolver configured?"错误的方法是在webmvc-context.xml中添加上述代码配置MultipartResolver实例。这样,Spring就能够正确解析文件上传请求,避免出现错误。
Spring文件上传 - 出现"Expected MultipartHttpServletRequest: is a MultipartResolver configured?"错误的原因及解决方法
在进行Spring文件上传时,有时会遇到"Expected MultipartHttpServletRequest: is a MultipartResolver configured?"错误。该错误的原因是没有配置MultipartResolver解析器。
解决该问题的方法是在servler-context.xml中添加以下代码:
这样就可以解决该错误,无需进行其他操作。这是最简单的解决方法。谢谢。