성장 일기/쌍용교육센터 / / 2023. 4. 16. 12:36

0415/FileUpload

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 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
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유