쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/sangyoungjsp에 올려두었습니다.
웹의 비 연결성의 문제
FileUpload
- FileUpload를 처리할 수 있는 Component가 필요
- RFC1867 HTML Form 기반의 FileUpload
( Apache Commons FileUpload, MultipartRequest 등이 존재 )
- post 방식으로만 파일이 전송된다.
* Apache Commons FileUpload
- apache.org에서 다운
- 한글 파일명을 처리하기 어렵다.
- 중복 파일명에 대한 처리를 개발자가 해야 한다.
- 코드가 길다.
* MultipartRequest
- servlets.com에서 다운
- 한글 파일명을 처리하기 쉽다.
- 중복 파일명에 대한 처리를 자동으로 해준다.
- 코드가 짧다.
* 업로드 순서
1. FileUpload Component 다운받고 Project에 배포
2. 전송 방식을 Parameter 전송 방식에서 binary 전송 방식으로 변경
<form name="이름" action="값을 받을 페이지 URL" enctype="multipart/form-data">
<input type="file" name="이름"/>
<input type="submit" value="전송"/>
</form>
3. Back-end에서 FileUpload Component를 사용하여 업로드 된 파일을 처리
(cos.jar에 있는 MultipartRequest 클래스를 사용하여 파일 처리)
1. 파일을 저장할 폴더 설정
2. 폴더명 얻기
File saveDirectory=new File("저장경로");
3. 업로드될 파일의 최대 크기 설정( Byte * KByte * MByte * )
int maxSize=1024*1024*크기;
4. File Component를 생성 - 생성하면 File이 업로드 된다.
- 장점 : 편리한 업로드
- 단점 : 대용량 파일(600MByte)의 업로드 효율이 좋지 않다.
MultipartRequest mr=new MultipartRequest( request, 저장경로,
최대크기, 파일명encoding할charset, 중복파일에 대한처리객체);
// 파라메터 처리 – request가 아닌 MultipartRequest 객체를 사용하여 처리
String 변수명=mr.getParameter("이름");
String[] 변수명=mr.getParameterValues("이름");
* 파일명 얻기
- 원본파일명
String 파일명=mr.getOriginalFileName("HTML Form Control명");
- 변경된 파일명(같은 이름의 파일이 존재할 때)
String 파일명=mr.getFileSystemName("HTML Form Control명");
- 주의 : 서버에서 실행될 수 있는 파일은 업로드하지 못하도록 막는다.
'성장 일기 > 쌍용교육센터' 카테고리의 다른 글
0418/AJAX, JSONObject (0) | 2023.04.18 |
---|---|
0417/다운로드, 웹 동작 방식 (0) | 2023.04.18 |
0414/DBMS 암호화 (0) | 2023.04.16 |
0413/DBCP, 로그인 흐름 (0) | 2023.04.13 |
0412/forEach, import, VO 출력 (0) | 2023.04.13 |