2009-07-31 7 views
1

PHP 세계에서는 '업로드'또는 이와 유사한 응용 프로그램 폴더에 디렉토리를 만드는 것이 일반적입니다. 모든 업로드 된 파일은 데이터베이스에 저장됩니다. 데이터베이스에는 해당 파일의 상대 경로가 들어 있습니다.서블릿 : 업로드 된 파일을 저장할 위치는 어디입니까?

그러나 자바/서블릿 세계에서는 업로드 된 파일을 처리하는 일반적인 방법이 무엇인지 모르겠습니다. 응용 프로그램 디렉토리 내의 디렉토리 경로를 얻는 것이 어려울 수 있으며 WAR 파일을 재배포하면 전체 디렉토리가 파괴 될 수 있습니다. 현재 업로드 된 파일을 blob로 데이터베이스에 저장하고 있지만 이것이 내가 선호하는 해결책은 아닙니다.

제 질문은 업로드 한 파일을 어디에 저장해야합니까?

+0

왜 얼룩을 선호하는 해결책이 아닌가요? –

+1

파일을 데이터베이스에 저장하는 것은 파일 시스템에있을 때 데이터베이스 리소스를 소비하기 때문에? – banjollity

+0

당신은 그들이 소비 할 것으로 생각하는 자원은 무엇입니까? 데이터베이스는 구조화 된 파일에 의해 궁극적으로 뒷받침된다고 생각 했으므로 소비하려는 유일한 리소스는 (테이블 정의가 올바르면) 디스크 공간입니다. –

답변

4

응용 프로그램의 파일 구조 또는 응용 프로그램 서버/컨테이너 서버에 속하지 않는 디스크의 모든 폴더에 있습니다. 이 폴더/폴더의 절대 경로를 파일 또는 데이터베이스의 구성으로 유지할 수 있습니다.

1

왜 .war 계층 구조 외부의 디렉토리에 저장하지 않습니까? 서블릿 매개 변수에 디렉토리를 지정하고 (구성 가능하게하기 위해) 서블릿 초기화시 확인/작성하십시오 (따라서 사용자가 처음으로 파일을 업로드 할 때 먼저 문제가 발생하지 않습니다).

0

동일한 작업을 수행하십시오. filesytem 어딘가에 업로드 폴더를 만들고 거기에 파일을 고정하십시오. WAR를 배포 해제 한 경우 제거되지 않으므로 웹 컨테이너에 저장하지 마십시오.

0

브라이언과 보리스가 언급했습니다. 왜 업로드 된 파일을 WAR 디렉토리 외부에 저장하지 않을까요? 응용 프로그램 디렉토리 외부에 경로를 가져 오는 것이 왜 어려운 이유입니까?

0

데이터베이스의 blob 필드에 저장하십시오. 모든 현대 데이터베이스는이를 처리 할 수 ​​있습니다.

서블릿 컨테이너 외부의 요청을 처리하여 성능 향상이있을 때 높은 빈도로 파일을 제공하는 경우를 제외하고는 한 가지 예외가 있습니다.

관련 문제