728x90
★ File UPLOAD 라이브러리 : cos.jar파일 다운로드
- cos-22.05.zip 다운
★ File 업로드/다운로드
- 클라이언트 > (복사) > 서버 : 업로드
- 서버 > (복사) > 클라이언트 : 다운로드
- 파일 업로드 라이브러리 : cos.jar
■ 필요 파일들
- "com.test.file" > "FileTest.java" //서블릿
> "FileTestOk.java"
- webapp > "file" > "filetest.jsp" //jsp
> "filetestok.jsp"
■ FileTest.java : Servlet 페이지
package com.test.file;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
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("/filetest.do")
public class FileTest extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//FileTest.java
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/file/filetest.jsp");
dispatcher.forward(req, resp);
}
}
■ filetest.jsp : jsp파일
- 파일 업로드는 반드시 POST 메소드를 사용한다.
<%@ 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>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>
</style>
</head>
<body>
<!-- filetest.jsp -->
<h1>파일 업로드</h1>
<!--
파일 업로드는 반드시 POST 메소드를 사용한다.
- enctype="application/x-www-form-urlencoded" > 모두 문자열
- enctype="multipart/form-data" > 문자열 + 이진 데이터
-->
<form method="POST" action="/jsp/filetestok.do"
enctype="multipart/form-data">
<table>
<tr>
<th>텍스트</th>
<td><input type="text" name="txt"></td>
</tr>
<tr>
<th>파일</th>
<td><input type="file" name="attach"></td>
</tr>
</table>
<div>
<input type="submit" value="업로드">
</div>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
</script>
</body>
</html>
■ FileTestOk.java : 파일 가져오기
package com.test.file;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
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("/filetestok.do")
public class FileTestOk extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//FileTestOk.java
//문자열 데이터 가져오기
//첨부 파일 가져오기
//System.out.println("문자열: " + req.getParameter("txt"));
//cos.jar
//- Request > (교체) > MultipartRequest
req.setCharacterEncoding("UTF-8");
try {
System.out.println(req.getRealPath("/uploads"));
MultipartRequest multi = new MultipartRequest(
req,
req.getRealPath("/uploads"),
1024 * 1024 * 100,
"UTF-8",
new DefaultFileRenamePolicy()
);
//데이터 가져오기
String txt = multi.getParameter("txt");
String orgfilename = multi.getOriginalFileName("attach");
String filename = multi.getFilesystemName("attach");
req.setAttribute("txt", txt);
req.setAttribute("orgfilename", orgfilename);
req.setAttribute("filename", filename);
} catch (Exception e) {
e.printStackTrace();
}
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/file/filetestok.jsp");
dispatcher.forward(req, resp);
}
}
■ filetestok.jsp
<%@ 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>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>
</style>
</head>
<body>
<h1>결과</h1>
<div>
<div>txt : ${txt}</div>
<div>orgfilename : ${orgfilename}</div>
<div>filename : ${filename}</div>
<hr>
<div>다운로드 : <a href="/jsp/uploads/${filename}" download > ${filename}</a></div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
</script>
</body>
</html>
★ 실행 결과
- 파일 업로드
- 파일 업로드 확인
- 다운로드 클릭 시 : 파일 다운로드
728x90
'Server' 카테고리의 다른 글
Servlet + JSP STEP 3 - 이미지 뷰어(갤러리) (0) | 2023.05.12 |
---|---|
Servlet + JSP STEP 2 - FileProject (0) | 2023.05.12 |
JSTL STEP 1 - JSTL 기초 셋팅 및 응용 (0) | 2023.05.11 |
JSP STEP 11 - JSP Model 2 + EL + JSTL (0) | 2023.05.11 |
JSP STEP 10 - JSP Model (2) | 2023.05.11 |