스프링 파일 업로드 - MultipartHttpServletRequest 가져오기: MultipartResolver가 구성되어 있습니까?에러
angular-file-upload를 사용하여 여러 파일 업로드 기능을 Angular 웹 응용 프로그램에 통합하려고 합니다.현재 프런트 엔드 기능은 기능하지만 업로드 시도마다
java.lang.IllegalStateException,java.io.IOException]:
java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest:
is a MultipartResolver configured?
예외.
업로드 컨트롤러는 다음과 같이 정의됩니다.
@Controller
@PropertySource("classpath:application.properties")
public class FileUploadController {
@Resource
private Environment env;
@RequestMapping(value = "/fileupload", method = RequestMethod.POST)
@ResponseBody
public List<String> fileUpload(@RequestParam("file") MultipartFile[] uploadFiles) throws IllegalStateException, IOException {
//file processing logic
}
}
인마이AppConfig.java
클래스, 나는 콩을 선언한다.
@Bean
public CommonsMultipartResolver commonsMultipartResolver(){
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
commonsMultipartResolver.setDefaultEncoding("utf-8");
commonsMultipartResolver.setMaxUploadSize(50000000);
return commonsMultipartResolver;
}
웹 어플리케이션을 시작합니다.
@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));
}
나는 그것이 의 부족 때문이라고 생각하지 않는다.<form>
내 각도 뷰의 요소, 왜냐하면 내가 볼 수 있기 때문이다.Content-Tyle
이multipart/form-data
Request Payload가 적절하게 설정되어 있는지 확인합니다.
Remote Address:192.168.33.10:80
Request URL:http://dev.jason.com/rest/fileupload
Request Method:POST
Status Code:500 Internal Server Error
Request Headers
Accept:*/*
Accept-Encoding:gzip,deflate
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:415235
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryBHlsldPQysTVpvwZ
Host:dev.jason.com
Origin:http://dev.jason.com
Pragma:no-cache
Referer:http://dev.jason.com/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36
Request Payload
------WebKitFormBoundaryBHlsldPQysTVpvwZ
Content-Disposition: form-data; name="file"; filename="IMG_5072.jpg"
Content-Type: image/jpeg
------WebKitFormBoundaryBHlsldPQysTVpvwZ--
이 문제는 다음을 포함해도 계속 발생합니다.
@Bean
public MultipartConfigElement multipartConfigElement(){
MultipartConfigFactory multipartConfigFactory = new MultipartConfigFactory();
multipartConfigFactory.setMaxFileSize("10MB");
multipartConfigFactory.setMaxRequestSize("50MB");
return multipartConfigFactory.createMultipartConfig();
}
에AppConfig.java
명령어 코멘트를 해제합니다.
servlet.setMultipartConfig(ctx.getBean(MultipartConfigElement.class));
내 서블릿 이니셜라이저 수업에서 말이야
어떤 도움이라도 감사합니다!
Spring의 MVC 스택에서는MultipartResolver
콩이라고 불리다multipartResolver
변경하다@Bean
하는 방법
@Bean
public CommonsMultipartResolver multipartResolver(){
또는
@Bean(name = "multipartResolver")
public CommonsMultipartResolver commonsMultipartResolver(){
이것을 servler-context.xml에 추가합니다.
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="268435456"/>
</bean>
다른 건 필요 없어요
다음과 같이 webmvc-context.xml에 추가해야 합니다.
<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver"/>
언급URL : https://stackoverflow.com/questions/27050018/spring-file-upload-getting-expected-multiparthttpservletrequest-is-a-multipar
'source' 카테고리의 다른 글
컨트롤러에서 PreAuthorize가 작동하지 않음 (0) | 2023.03.26 |
---|---|
jquery의 약속 방법은 실제로 어떻게 작동합니까? (0) | 2023.03.26 |
요소 외부를 클릭할 때 이벤트를 발생시키는 지시어 (0) | 2023.03.26 |
폼 7과 커스텀 투고 타입에 문의합니다. (0) | 2023.03.26 |
django 테스트클라이언트를 사용한JSON 전송 (0) | 2023.03.26 |