webapp >> file >> fileUploadForm.jsp 생성
파일 업로드
➡️자바의 입출력 스트림사용 (직접X, 컴포넌트 사용-누가 만들어 놓은것)
MIME 타입
MIME 타입이란 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘입니다: 웹에서 파일의 확장자는 별 의미가 없습니다. 브라우저들은 리소스를 내려받았을 때 해야 할 기본 동작이 무엇인지를 결정하기 위해 대게 MIME 타입을 사용합니다.
멀티파트 타입
HTML 과 POST] 메서드의 관계 속에서 multipart/form-data 을 사용해야함
MIME 타입
MIME 타입이란 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘입니다: 웹에서 파일의 확장자는 별 의미가 없습니다. 브라우저들은 리소스를 내려받았을 때 해야 할 기본 동작이 무엇인지를 결정하기 위해 대게 MIME 타입을 사용합니다.
멀티파트 타입
HTML Forms (en-US)과 [POST](<https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/POST>) 메서드의 관계 속에서 multipart/form-data 을 사용해야함
출처 : https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types
1. cos.jar 라이브러리 설치
- 프로젝트당 한번
복사해서
lib 폴더 안에 설치
2. 파일이 업로드되는 장소(upload 폴더) 생성
WEB-INF안에 upload 파일 생성
file>>fileUploadPro.jsp
파일이 저장되는 장소
// 파일이 저장되는 장소
String realPath = request.getRealPath("/upload");
System.out.println("realpath: " + realPath);
// realpath: C:\\eclipse_jsp\\JSP\\workspace_JSP7\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\JSP7\\upload
- 업로드는 가상주소(tomcat 서버에 저장되는 장소)에 저장됨
파일의 크기
// byte -> KB(2^10 byte) -> MB(2^20 byte) -> GB(2^30 byte)
// 파일의 크기
int maxSize = 5*1024*1024; //5MB
파일업로드
- MultipartRequest 객체 생성만 하면 자동으로 업로드가 됨
순서가 중요!
// 파일업로드 => MultipartRequest 객체 생성
MultipartRequest multi = new MultipartRequest(
request,
realPath,
maxSize,
"UTF-8",
new DefaultFileRenamePolicy()
);
System.out.println("파일 업로드 성공!");
인자 | 설명 |
request | 폼태그 전달정보 |
realPath | 실제 파일이 저장되는 장소 |
maxSize | 파일크기 제한 |
"UTF-8” | 한글처리 인코딩 |
new DefaultFileRenamePolicy() | 파일이름 중복 처리객체 |
=> 객체 생성 == 파일 업로드
전달정보 처리(파라미터, name, msg)
String name = request.getParameter("name");
String msg = request.getParameter("msg");
➡️ request 처리 불가능
String name = multi.getParameter("name");
String msg = multi.getParameter("msg");
multi.~로 바꿔주면 됨!
그럼, 파일도 추가해보쟈
내가 올릴 파일 →
파일명 : 땅1 이다.
근데 분명 multi.~로 줬는데도 null로 뜸
➡️파라미터 정보 처리 불가능하기 때문이다.
String fileName = multi.getParameter("file"); // 전달했던 file이름
String fileName1 = multi.getFilesystemName("file"); // 전달했던 file이름
%>
<h2> 전달정보(name):<%=name %></h2>
<h2> 전달정보(msg):<%=msg %></h2>
<h2> 전달정보(fileName):<%=fileName %></h2>
<h2> 전달정보(fileName1):<%=fileName1 %></h2>
firstName1이 처리가 되었다.
그런데, 파일의 이름이 변경되었다. 원본이름으로 주고싶은 경우에는
// 업로드된 파일의 이름정보
// => 파라미터 정보 처리 불가능
String fileName = multi.getParameter("file"); // 전달했던 file이름
String fileName1 = multi.getFilesystemName("file"); // 전달했던 file이름
// => 업로드시 파일의 이름(중복일 경우 이름 변경)
String fileName2 = multi.getOriginalFileName("file"); // 전달했던 file이름
// => 업로드시 파일의 원본이름
%>
<fieldset>
<h2> 전달정보(name):<%=name %></h2>
<h2> 전달정보(msg):<%=msg %></h2>
<h2> 전달정보(fileName):<%=fileName %></h2>
<h2> 전달정보(fileName1):<%=fileName1 %></h2>
<h2> 전달정보(fileName2):<%=fileName2 %></h2>
굿굿~
업로드를 했으니 다운로드도 해보자!
2023.09.21 - [JSP] - [JSP] 파일 다운로드
'JSP·Servlet' 카테고리의 다른 글
[JSP] 파일 다운로드 심화편 (1) (0) | 2023.09.21 |
---|---|
[JSP] 파일 다운로드 기초편 (0) | 2023.09.21 |
[JSP] 쿠키(Cookie) (0) | 2023.09.18 |
[JSP] 영역 객체 (0) | 2023.09.18 |
[JSP] 액션태그, 내장객체 종류와 사용 (0) | 2023.09.18 |