JSP
업로드된 파일 서버 전송 처리
Song hyun
2024. 8. 1. 11:41
728x90
반응형
1. 파일 유효성 검사
// 유효성 검사
if(filePart==null || filePart.getSize()==0) { // 파일 전송 x 확인
response.setContentType("text/html");
response.getWriter().println("첨부 파일을 추가해주세요!");
return;
}
2. 파일 원본 이름 가져오기
// 사용자가 올린 파일 원본 이름을 가져온다.
// String originFileName=filePart.getSubmittedFileName();
String originFileName=Paths.get(filePart.getSubmittedFileName()).toString();
System.out.println("originFileName : "+originFileName);
3. 고유한 파일명 추출 + 확장자 앞에 넣기
// 1. 원본 파일명을 가져온다.
// 2. 가능한 절대 중복되지 않을 이름을 만들어준다. -> 어떻게?!
// UUID를 통해서 고유한 파일명을 만들어보자!
// 3. 확장자를 분리해서 원본 파일명 + _ + 고유한 UUID를 생성해서
// 새로운 파일명을 만들어준다.
String uniqueFileName=UUID.randomUUID().toString();
// a.png, b.jpeg ==> a_ngdfg.png
// 파일 확장자를 추출하여, 고유한 파일명 뒤에 추가한다.
String extension = "";
int i=originFileName.lastIndexOf(".");
System.out.println("UNIQUE : "+uniqueFileName);
System.out.println(". 인덱스 번호 : "+i);
if(i>0) {
// . 포함한 확장자를 추출한다.
extension = originFileName.substring(i);
System.out.println("extension : "+extension);
}
uniqueFileName+=extension;
System.out.println(uniqueFileName);
4. 파일 저장 경로 설정하기
// 4. 어디에 저장할지 경로를 설정해야 한다.
// C:\workweb\jsp_file_upload\src\main\images
File uploadDirFile = new File("C:\\workweb\\jsp_file_upload\\src\\main\\images");
// 5. 해당 경로에 폴더가 존재하는지 확인 -> 없다면 폴더를 코드로 생성
// exist-> 존재할 시 true 반환, 없으면 false 반환
if(!uploadDirFile.exists()) {
// 없으면 생성
// mkdir()과 mkdirs()의 차이= 부모 폴더가 없으면 함께 생성해!
if(uploadDirFile.mkdirs()) {
System.out.println("디렉토리가 생성되었습니다. "+uploadDirFile);
} else {
throw new ServletException("디렉토리 생성에 실패했습니다.");
}
}
5. 전송받은 파일을 해당 폴더(4번)에 생성하기(서버에 저장)
// 6. 파일 생성하기
File fileToSave = new File(uploadDirFile,uniqueFileName);
System.out.println("fileToSave.getAbsolutePath() : "+fileToSave.getAbsolutePath());
// 7. 파일을 서버에 저장하기
filePart.write(fileToSave.getAbsolutePath());
6. 파일 전송 시 응답 구성
// 8. 응답 페이지 구성
response.setContentType("text/html");
response.getWriter().print("파일 업로드에 성공!");
response.getWriter().print("<br>");
response.getWriter().print("사용자가 올린 파일명 : "+originFileName);
response.getWriter().print("<br>");
response.getWriter().print("서버에 저장된 파일명 : "+uniqueFileName);
728x90
반응형