인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

00님의 프로필 이미지
00

작성한 질문수

[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]

25_Ajax를 이용한 파일업로드 구현

파일 업로드 질문

작성

·

364

0

안녕하세요. 강의를 듣다가 헷갈리는부분이 있어 질문 남깁니다..!

 

 

1.

 

 

 

String UPLOAD_DIR = "file_repo" ;

String uploadPath = request.getServletContext().getRealPath("")+File.separator+UPLOAD_DIR ;

File currentDirPath = new File(uploadPath) ; 

if (!currentDirPath.exists()) {

currentDirPath.mkdir();

}

 

이 부분과 

 

DiskFileItemFactory factory=new DiskFileItemFactory(); 

factory.setRepository(currentDirPath);

factory.setSizeThreshold(1024*1024);

 

이부분의 차이가 무엇인가요 ?  둘다 파일 임시 경로를 만들어주는 코드 아닌가요 ??

 

2.

 

String uploadPath = request.getServletContext().getRealPath("")+File.separator+UPLOAD_DIR ; 

에서 

 

.getRealPath(“”) 정확히 무엇인가요 ?? 그리고 괄호 안에 (“”) 라고 표시해야되는건가요 ????

 

 

3. 그리고 제가 27강의 memberList 에서 이미지 띄우기 했는데

이런식으로 뜨는데 뭐가 문제인가요?? (근데 업로드한 파일에 따라서 다른것같습니다. 어떤 사진은 올리면 제대로 잘 나오는데 어떤 사진들은 저런식으로 이미지가 안나옵니다..)

 

 

답변해주시면 감사하겠습니다 :D 

답변 1

0

박매일님의 프로필 이미지
박매일
지식공유자

1. 임시폴더를 만드는 방법은 어떤 API를 사용하느냐에따라서 달라질 수도 있습니다. 

구현방법의 차이라고 보시면 될듯합니다.아래처럼 API를 사용해서도 된다면 아래 코드로 사용하셔도 됩니다.

 

DiskFileItemFactory factory=new DiskFileItemFactory(); 

factory.setRepository(currentDirPath);

factory.setSizeThreshold(1024*1024);


2. String uploadPath = request.getServletContext().getRealPath("")+File.separator + UPLOAD_DIRECTORY;

위 코드는 ->웹애플리케이션의 루트 디렉토리를 기준으로 업로드 경로를 만드는 부분입니다.

 

-. request.getServletContext().getRealPath("") 이부분은 요청 URL의 context path(즉 ROOT경로)를 가지고 온 다음에

실제 하드디스크에있는 실제경로를 알아내기 위해서 getRealPath("")쓰는 것입니다. ""안에 특정 폴더를 지정하면

그 폴더의 실제경로를 만들어주기 때문에 여기에서는 ROOT경로까지만 알아내기 위해서 빈값으로 적어둔거구요

예를들면 경로가 D:\A_teaching...어쩌고 이런식으로 나올겁니다.

 

-.File.separator는 파일클래스가 지원해주는건데, 운영체제에 의존해서.. 윈도우는 \등 그때그때 달라질수도있어서 

운영체제에 맞는 디렉토리구분자를 쓰기위해서 작성한 거구요

 

-.UPLOAD_DIRECTORY에 연결된 폴더를 만들고 거기에 파일을 저장할려고 마지막에 디렉토리 경로를 연결해주였습니다.

3. 이미지에따라서 보이고 않보이고 하는 부분이 잘 파악이 않되는데요? 혹시 한글 이미지 이름이 깨져서 안나오는지
한번 검토해보시기 바랍니다.?

이해가 되셨는지 모르겠지만 한번 다시 해보시고 문의 주시기 바랍니다.^^

 

00님의 프로필 이미지
00

작성한 질문수

질문하기