2011-09-13 2 views
0

업로드 된 파일을 세션 변수로 잡고 다른 JSP/서블릿간에 공유 할 수 있습니까? (즉, 업로드 페이지 이외의 페이지에서 파일을 사용할 수 있어야합니다.) 또는 파일을 서버에 저장해야합니까? 다른 방법이 있습니까?세션의 서블릿간에 파일 업로드

답변

3

예, 가능합니다. byte[]에 저장하고 세션 속성으로 저장하십시오.

byte[] fileContent = getItSomehow(); 
session.setAttribute("fileContent", fileContent); 
// ... 

당신은 그러나 byte[]의 모든 byte 효과적으로 서버의 메모리 1 바이트를 먹는 것을 깨닫게해야합니다. 따라서 10 개의 큰 파일 하나에 100 개의 동시 사용자 세션이있는 경우 이미 1GB의 서버 메모리가 사용됩니다. 서버에 충분한 메모리가없고 방문자가 많은 경우 OutOfMemoryError s의 위험에 처하게됩니다. 이 방향으로 가기 전에 두 번 생각하십시오.

+0

감사합니다. 가장 좋은 방법은 무엇입니까? –

+0

디스크에 저장하거나 메모리에 저장한다는 의미입니까? –

+1

디스크 파일 시스템의 임시 폴더에 저장하십시오. Apache Commons FileUpload는 이미 100KB보다 큰 파일에 대해서는 기본적으로이 작업을 수행합니다. 반면,'File # createTempFile()'을 사용하면 더 세밀하게 제어 할 수 있습니다. – BalusC