내가 해보려해도이 문제를 파악할 수없는 것 같습니다.스프링 부트 + 멀티 파트/폼 데이터 컨트롤러 방법
FILEDATA 변수는 항상 null이며,@RequestMapping(consumes = {"multipart/form-data"}, method = {RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT, RequestMethod.DELETE}, path = {"/rest", "/rest/**"})
public void handleMultipartRestApiRequest(MultipartHttpServletRequest request, HttpServletResponse response, @RequestPart(value = "filedata", required = false) MultipartFile filedata) throws Exception {
r...
}
요청 개체 : 나는 다음과 같은 방법으로 주석 @RestController는 봄 부팅 1.4 응용 프로그램을
curl -v -F name=countries.zip -F [email protected] http://localhost:8080/rest
:이 curl 명령을 제출하고있어 항상 0 개의 파일을 보여줍니다.
MultipartResolver를 사용하여 여러 구성을 시도했습니다.
multipart.enabled=true
spring.http.multipart.enabled = 사실
:@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(5000000);
multipartResolver.setMaxInMemorySize(5000000);
multipartResolver.setDefaultEncoding("utf-8");
return multipartResolver;
}
나는 또한 수동으로 application.properties에서이 붙어 그냥이 비활성화 것 1천% 확인하기 위해 : 여기 내 최신
좋은 측정을 위해, 여기에 요청 헤더 :
* Connected to localhost (::1) port 8080 (#0)
> POST /rest HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.43.0
> Accept: */*
> Content-Length: 817999
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=------------------------7d3f4606455e862b
>
누구 단서 왜이 컨트롤러에서 파일을 볼 수없는 것 같습니다.
UPDATE 1 :
내가 요청 객체에 충분히 파고 org.catalina.connector.Request 객체에 도착하는 경우에 대한 정보를 보유하는 것 같다 DiskFileItem를 포함 ApplicationPart 항목의 ArrayList를이 내가 업로드하려고하는 파일. 이것은 실제로 request.getParts()를 호출 할 때 반환되는 Collection입니다. "isFormField"와 같은 그것은 또한 콘텐츠 형식이 응용 프로그램/octet-stream을가, 크기가 -1 말합니다 그러나
/private/var/folders/n8/15d6vbhj0692cslf3cx8c1jm0000gn/T/tomcat.6840182548028446450.8080/work/Tomcat/localhost/myapp
, 그리고 몇몇 다른 이상한 것들, 심지어 거짓 : 파일 항목의 위치 경로는 약간 긴 TMP 경로입니다 내 컬 명령에서 양식 필드로 지정하고 있지만. 그래서 봄은 multipart/form-data 요청을 처리하는 올바른 방법을 요구하고 있지만, "part"정보는 그것이 옥텟 스트림이라고 생각하는 것 같습니다.
나는 당신이 당신의 Multipart Object를 인스턴스화하지 않았다고 겸손하게 생각합니다. 좋아요 : MultipartFile filedata = fileToBeAdded.getSomething(); –
무슨 뜻인지 확실하지 않습니다 ... 요청에있는 파일을 기대하고 있습니다. Map map = request.getFileMap();과 같은 작업을 수행하면지도가 비어 있습니다. –
Bal
'@ RequestPart' 대신'@ RequestParam'을 시도하십시오. –