2011-02-16 5 views
9

저는 Grails 초보자입니다. 그러니 나와 함께 인내심을 가져주십시오. 현재 저는 파일 업로드를 조작하는 데 어려움을 겪고 있습니다. 늘어나는만큼 내가 request.getFile()을 사용하여 쉽게 이해할 수있는 바이트 스트림을 얻을 수 있습니다. 내가 그렇게 전에, 나는 다음과 같은 확인하려면 : 파일의Grails 파일 업로드 - 파일 및/또는 콘텐츠 유형을 인식하는 방법?

  • 파일 이름이 파일의
  • 파일 크기가 업로드되고 업로드되는
  • 파일의
  • 내용/파일 형식은
  • 을 업로드되는

어떻게이 작업을 수행 할 수 있습니까? 파일을 서버에 업로드하기 전에 가능한가? 대용량 파일의 업로드를 차단하고 싶습니다.

+1

당신이에이 작업을 수행하고자 있습니까 프런트 엔드 또는 백 엔드? –

답변

19

모든 정보는 요청 매개 변수를 전송할 수있는 CommonsMultipartFile 개체에 포함되어 있습니다.

당신은 (컨트롤러에서)처럼 사용할 수 있습니다

def uploaded = { 
    def CommonsMultipartFile uploadedFile = params.fileInputName 
    def contentType = uploadedFile.contentType 
    def fileName = uploadedFile.originalFilename 
    def size = uploadedFile.size 
} 

지금까지 대용량 파일 업로드를 차단하고,이이 양식에 다음을 추가하여 수행 할 수 있습니다 :

<INPUT name="fileInputName" type="file" maxlength="100000"> 

을하지만, 모든 브라우저에서 지원하지는 않습니다. 다른 한도는 컨테이너 업로드 제한입니다 (Tomcat 구성 또는 사용중인 컨테이너 참조).

그 외의 경우 컨트롤러에서 크기를 확인하고 거부해야합니다.

+0

이 모든 것은 간단한 HTML 양식 제출을 사용하는 경우에 한합니다. – mfloryan

+0

유용하고 유용한 답변입니다. 방금 나에게 많은 시간을 절약 해 줬어. 감사합니다 :)) –

+0

이것은 나를 많이 도와 줘서 고마워. – Motilal

0

또는 CommonsMultipartFile을 사용하지 않고 파일 속성을 직접 업로드 할 수 있습니다.

데프 ufile = request.getFile ("fileInputName")
에 println (ufile.contentType)
에 println (ufile.originalFilename)
에 println (ufile.size)