2014-10-02 4 views
1

요청 또는 HttpServletRequest 기능을 사용하여 여러 파일을 복사하려고합니다.grails에서 여러 파일 업로드

나는 각 파일에 대한의 MultipartFile 개체에 액세스 한 컨트롤러 액션에서 선택한 모든 파일을 통해 루프 수 있었다

- 여기에 액션 코드 :

request.getFileNames().each{ 
    request.getFiles(it).each 
    { file -> 
     // loop through all files selected 
    println "name: $file.name Originalfilename: $file.originalFilename contentType: $file.contentType" 
     file.transferTo(new File(userDir, file))     
    } // eo for loop 
} // eo requect.getFiles().each.... 

내가 그루비 런타임 오류에서 얻을은 transferTo 라인 - 오류 메시지의 존재 :

가 생성자를 일치 찾을 수 없습니다 : java.io.File에 (java.io.File에, org.springframework.web.multipart.commons.CommonsMultipartFile)

transferTo 행을 인쇄 출력 선에 표시하면 루프는 선택한 각 파일에 대한 올바른 MultipartFile 정보를 생성합니다.

는이 개 파일에 대한 출력은 여기에서 선택한 참조 :

이름 : 파일 [] Originalfilename : 대한-sale.gif의 contentType : 이미지/GIF

이름 : [] Originalfilename 파일 : front.gif의 contentType : image/gif

copyTo를 호출하려면 어떻게해야합니까?

답변

0

- 마이크 당신이 설명서에서 볼 경우 CommonsMultiPartFile 당신이 당신의 문제는 당신이 당신의 파일을 구성하는 방법에 있음을 볼 수 있습니다.

file.transferTo(new File(userDir, file)) 

은 다음과 같아야합니다

file.transferTo(new File(userDir, file.getOriginalFilename())) 

당신은 파일의 originalFilename 속성에 액세스해야합니다.

+0

잘 작동합니다. 또한'file.originalFilename'을 시도했지만 ** groovy.lang.MissingMethodException ** 오류 및 메시지로 실패했습니다 : 메소드의 서명이 없습니다 : org.springframework.web.multipart.commons.CommonsMultipartFile. originalFilename()은 인수 유형에 적용 할 수 있습니다.() 값 : [] 가능한 해결책 : getOriginalFilename()'. 그러나 위의 인쇄 줄은 originalFilename을 올바르게 표시합니다. 이유는 확실하지 않습니다. – mikek

+0

입력 html 태그에서 설정 한 초기 동작에서 다른 동작으로 전달 된 multipartfile 객체에 대한 요청을 실행할 수 있습니다. 리디렉션 된 동작의 문자열에 액세스 할 수 있습니다. ** form : [email protected]5d79259** 그러나 request.getFiles와 같은 요청 명령을 실행할 수 없습니다. MultipartFile로 캐스팅하려고하면 실패합니다. -mike – mikek

+0

한 컨트롤러에서 다른 컨트롤러로 리디렉션 또는 전달한 후 파일 업로드에 액세스 할 수 있는지 여부를 모르겠습니다. 이는 원래 질문과 다른 질문이며 별도로 게시해야합니다. 또한, 내 대답이 귀하의 첫 번째 질문에 대답한다면 그것은 당신이 그것을 받아 들일 경우 다른 사람들에게 도움이 될 것입니다, 그리고 그것이 좋은 대답 이었으면 upvote도 인정 될 것입니다. 물론 –