@Controller 및 @RequestMapping을 사용하여 spring 3.1.2를 사용하여 여러 파일을 업로드하려고합니다.HTML5 다중 파일 형식 기능을 사용하여 스프링 MVC 다중 파일 업로드
다음은 내가 수행 한 작업과 구성입니다.
의 HTML5 형식 :
<form action="addFileSystemImage.foo" method="post" enctype="multipart/form-data">
<input class='fileInput' type="file" name="files[]" multiple="multiple" />
<input type="text" value="13asdf12eadsf" name="locId"/>
<input type="submit" />
</form>
컨트롤러 방법 :
@RequestMapping(value="/publisher/addFileSystemImage.foo", method=RequestMethod.POST)
public @ResponseBody List<UploadedFile> addFileSystemImage(@RequestParam("files[]") ArrayList<MultipartFile> files, String locId, HttpServletRequest request) {
//do lotsa voodoo rocket science here to process the files
}
내 conf의 :
<mvc:annotation-driven />
<context:component-scan base-package="foo.package"></context:component-scan>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
addFileSystemImage 방법에 도착 않는 양식을 제출. locId 인수의 데이터는 여기에 있지만 "files"인수는 바인딩되지 않습니다. 체계적으로 null입니다. 어떤 조합의 인수/필드 이름/인수 유형이든 상관 없습니다.
HttpServletRequest 인수는 org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest이며 실제로 파일 데이터를 보유하는 multiPartFile 속성을 보유합니다. 디버그 값을 보면 난 ... 이제 ...
을 내 파일 []가 실제로 여기에 의미
{files[]=[[email protected]6afd7f9, [email protected]28c2811, [email protected]f9aaed7]}
나에게 준다 ...하지만 어떻게 든 제대로 단계를 데이터 바인딩을 통과하지 못한 요청에서 데이터를 가져올 수 있다고 말해 주겠다고 말하고 싶습니다.하지만이 작업을 올바르게 수행하는 것이 좋습니다 ... Sring way ... :) 그리고 MultipartFile의 ArrayList가 제대로 채워지도록하십시오.
내가 누락 된 항목이 있습니까? 아무도 실제로이 일을 제대로 했습니까? 이 ArrayList (또는 일반 Array)를 채우려면 어떻게해야합니까?
내가이 솔루션을 건너 온 것은 Spring MVC with ajax file upload and MultipartFile이다.하지만이 솔루션이 저에게 효과적이지 않기 때문에 나는 분명히 뭔가 잘못하고있을 것입니다.
참고 : 단일 파일 업로드를 사용할 수 있도록 관리했습니다. 하지만 오늘 당면한 과제는 여러 파일을 한 번에 가져 오는 것입니다.
도움을 주시면 감사하겠습니다.
미리 감사드립니다.
"files"인수를 List 또는 Multipart [] 파일로 선언하려고 했습니까? 스프링지지 목록이 ArrayList이고 스프링이 메소드 인수를 바인드하려고 할 때 캐스트가 실패 할 수도 있다고 생각하지 않습니다. –
나는 과거에 이런 식으로 일할 수 있었다. 나는 당신이 pomm에 commons-fileupload 의존성을 포함시켜야한다는 것을 기억한다. 어쩌면 그것을 시도해도 될까요? – gerrytan
어리석은 저 ...리스트와 배열로 작동했습니다 ... 모든 테스트 중에 내가 한 일을 잊어 버렸을 것입니다 ... 알렉스에게 감사드립니다. 당신은 질문에 대답 할 수 있고 원한다면 당신에게 알려줄 것입니다. 건배! – azpublic