gwooden_코린이
서블릿 파일 업로드 기능 구현 해보기 본문
728x90
다운로드 받은 cos.jar을 프로젝트 라이브러리에 넣어서 사용!
<form method="post" action="" enctype="mutilpart/form-data">
</form>
파일 업로드를 할때는 파일 이름만 보내는게 아닌 파일 자체를 보내야 되기 때문에 enctype="mutilpart/form-data" <-- 해당 코드를 삽입해서 사용해야 파일 자체를 보낼 수 있다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="" enctype="mutilpart/form-data">
이름 : <input type="text" name="name"><br>
제목 : <input type="text" name="title"><br>
<input type="file" name="upload"><br>
<input type="submit" value="업로드">
</form>
</body>
</html>
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
MultipartRequest multi = new MultipartRequest(
request,
saveDirectory, //저장 위치
maxPostSize, //파일 크기
encoding, //인코딩(utf-8)
policy //파일명 중복 처리
);
}
생성자 종류
- request,
- saveDirectory, //저장 위치
- maxPostSize, //파일 크기
- encoding, //인코딩(utf-8)
- policy //파일명 중복 처리
package com.test.upload;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/upload.do")
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public UploadServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String savePath = "upload"; //저장할 폴더명
int uploadFileSize = 5 * 1024 * 1024; //업로드 파일 최대 크기 (5MB)
String encType = "tuf-8";
ServletContext context = getServletContext();
String uploadFilePath = context.getRealPath(savePath); //서버에 저장되는 실제 경로
System.out.println(uploadFilePath); //확인 용도
}
}
파일을 여러개 업로드 할 경우
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="upload2.do" enctype="multipart/form-data">
1. 파일 <input type="file" name="file01"><br>
2. 파일 <input type="file" name="file02"><br>
3. 파일 <input type="file" name="file03"><br>
<input type="submit" value="업로드">
</form>
</body>
</html>
package com.test.upload;
import java.io.IOException;
import java.sql.Savepoint;
import java.util.Enumeration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;
@WebServlet("/upload2.do")
public class MultiUpload extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String savaDirectory = request.getServletContext().getRealPath("upload");
int fileSize = 5 * 1024 * 1024;
try {
MultipartRequest multi = new MultipartRequest(
request,
savaDirectory,
fileSize,
"utf-8",
new DefaultFileRenamePolicy()
);
Enumeration files = multi.getFileNames(); //업로드한 파일명들을 리턴 시켜준다. (여러 파일들)
while(files.hasMoreElements()) {
String file = (String)files.nextElement();
String fileName = multi.getFilesystemName(file); //파일명 (중복되면 변경됨)
String oriFlieName = multi.getOriginalFileName(file); //원본파일명
System.out.println(fileName);
System.out.println();
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
728x90
'JSP&Servlet' 카테고리의 다른 글
이클립스 jsp/서블릿 (0) | 2023.02.01 |
---|---|
이클립스 JSP/서블릿 로그인 및 회원가입 페이지 구현해보기 (0) | 2023.01.31 |
데이터베이스 커넥션 풀 (DBCP) (0) | 2023.01.30 |
이클립스 JSP/서블릿 JDBC 사용해보기 (0) | 2023.01.27 |
서블릿 필터 기능 (0) | 2023.01.27 |
Comments