관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

파일 업로드 2 - 파일 업로드에 사용되는 COS 라이브러리 2 : 단일 혹은 여러 개 파일 업로드하고 전송하기 본문

웹 · 앱 개발/JSP & Servlet

파일 업로드 2 - 파일 업로드에 사용되는 COS 라이브러리 2 : 단일 혹은 여러 개 파일 업로드하고 전송하기

huenuri 2024. 12. 17. 07:32

이제 본격적으로 오늘의 학습을 시작해 보겠다. 오늘은 아침 11시 이전까지 파일 업로드 단원을 모두 마치고 새로운 과목 학습에 들어가야지.

그럼 이어서 파일 업로드에 대해서 공부를 진행해보자.


 

 

 

 

 

파일 업로드에 사용되는 COS 라이브러리 두 번째

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

파일 업로드를 위한 폼을 작성하였으므로 입력 폼에서 선택한 파일을 실제로 업로드하는 서블릿 클래스를 작성해 보겠다.


 

 

 

 

 

[직접 해보기] 파일 업로드를 위한 서블릿 클래스

 

1. 서블릿 클래스 만들기

다음과 같이 서블릿 클래스를 만든다.

 

 

 

 

URL Mapping 패턴명도 upload.do라고 생성해 준다.

 


 

 

 

 

2. 코드 작성하기


 

 

 

 

3. 파일 실행하기

 

 

파일 실행은 JSP에서 해야 한다. 그렇지 않으면 이런 오류가 나타난다. 

 

 

 

 

 

파일 선택을 클릭하면 파일 열기 창이 나타난다. 거기서 마음에 드는 사진을 골라 전송 버튼을 클릭하면 된다.

 

 

 


 

 

 

 

 

 


 

 

 

 

4. 저장된 파일 경로 찾기

이 폴더를 찾는 것이 정말 어렵다.

 

 

 

 

아무튼 지금은 찾지 못하겠다.

 

 

 

 

 

 

 

한꺼번에 서버로 여러 개의 파일을 업로드하는 방법을 살펴보겠다. 


 

 

 

 

5. 한 번에 여러 개의 파일 업로드하는 방법

우선 다음과 같이 form 태그 내에 <input type="file"> 태그를 여러 번 기술한다. 이때 <input> 태그의 name 속성 값은 다르다.

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

[직접 해보기] 한꺼번에 여러 파일 업로드하기 위한 폼


 

 

 

 

[직접 해보기] 한꺼번에 여러 파일을 업로드하기 위한 서블릿

 

1. 서블릿 파일 만들기

 

서블릿 파일을 이름을 이처럼 만들고 url mapping도 진행한다.

 

 

 

 


 

 

 

 

2. 서블릿 코드 작성하기

 

하지만 여기서 Enumeration에 노란 줄이 뜬다. Enumeration에서 노란줄이 뜨는 이유는 사용된 Enumeration이 Raw 타입이기 때문이다. 이 경우에는 제네릭(generics)을 명시하지 않아서 경고가 발생한다.

 

해결 방법은 Enumeration에 제네릭 타입을 지정해 주면 된다. multi.getFileNames()가 반환하는 타입이 Enumeration<String>이므로 이를 명시적으로 선언하면 되는 것이다. 

 

이유 설명

 

  • Enumeration의 사용법은 예전 자바 버전부터 존재했다. 하지만 Java 5부터는 제네릭스가 도입되었기 때문에 타입을 명시하는 것이 권장된다.
  • Raw 타입(제네릭을 명시하지 않은 타입)을 사용하면 타입 안전성이 떨어지기 때문에 경고가 발생하는 것이다.

 

 

 

 

3. 코드 수정하기

 

코드를 수정해도 노란 줄이 없어지지 않아 이번에는 경고 표시를 하지 않는 것으로 수정했다. multi.getFileNames() 메서드는 Enumeration 타입을 반환하지만, 제네릭을 명시할 수 없는 Raw 타입으로 제공되기 때문에 제네릭 경고가 발생한다. 이는 com.oreilly.servlet.MultipartRequest 라이브러리 자체가 오래된 코드이기 때문이다.

 

 

경고는 컴파일러가 타입 안정성을 보장할 수 없을 때 발생한다. 오래된 라이브러리를 사용할 때는 @SuppressWarnings("unchecked")를 사용해 경고를 무시하는 것이 일반적인 해결 방법이다.


 

 

 

 

4. 코드 실행하기

 

여기서 파일을 선택하여 지정한다.

 

 

그런 다음 이전에 했던 것처럼 전송 버튼을 클릭하면 된다.

 

 

 

이제 파일이 잘 전송되었다.


 

 

 

 

학습을 마치고

드디어 파일 업로드 시스템을 다시 공부할 수 있게 되어 얼마나 기쁜지 모른다. 어제 몇 시간을 연구해도 되지 않아서 다른 단원 학습부터 진행하길 정말 잘한 것 같다. 그리고 뜻밖에 jar 파일을 찾아서 이젠 프로젝트도 만들고 실행도 잘 되었다.

중간에 어려운 부분이 있었지만 해결도 잘했고 이제 다음 포스트부터는 쇼핑몰 게시판을 꾸미기 위한 학습을 진행해 볼 것이다.

 

무척 기대가 된다.