Jsp - file upload

2020. 7. 26. 21:49Jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<%@ 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>
<h1>board/fwriteForm.jsp</h1>
<form action="fwritePro.jsp" method="post" enctype="multipart/form-data"><!--  필수코드!! multipart/form-data-->
<table border="1">
<tr><td>글쓴이</td><td><input type="text" name="name"></td></tr>
<tr><td>비밀번호</td><td><input type="password" name="pass"></td></tr>
<tr><td>제목</td><td><input type="text" name="subject"></td></tr>
<tr><td>파일</td><td><input type="file" name="file"></td></tr>
<tr><td>내용</td><td><textarea rows="10" cols="20" name="content"></textarea></td></tr>
<tr><td colspan="2"><input type="submit" value="글쓰기"></td></tr>
 
</table>
</form>
</body>
</html>
 
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@page import="board.BoardDAO"%>
<%@page import="board.BoardDTO"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.Timestamp"%>
<%@ 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>
<h1>board/writePro.jsp</h1>
<%
//한글처리는 자동으로 업로드시 됨.
// request.setCharacterEncoding("utf-8");
 
//파일 업로드 1.파일을 웹서버 폴더에 올리고 파일이름을 디비에 저장.(일반적인 방식)
//                        2. 파일을 디비에 저장.
//파일업로드 프로그램 설치(API)
//http://www.servlets.com -> COS File Upload Library -> download -> cos-20.08.zip
//압축해제 후 lib cos.jar -> WebContent->WEB-INF-cos.jar
//MultipartRequest(request,업로드경로,업로드파일크기,한글처리,동일이름변경);
//업로드경로 웹서버에 upload 폴더 만들기  WebContent - upload 
//upload 폴더 물리적인 경로 넣기
String uploadPath=request.getRealPath("/upload");//물리적인 경로 얻기 
//콘솔창에 물리적 경로 출력
// System.out.println(uploadPath);
//업로드 파일 크기 : 10M
int maxSize=10*1024*1024;
//한글"utf-8"
//동일이름 변경 DefaultFileRenamePolicy()
 
MultipartRequest multi=new MultipartRequest(request,uploadPath,maxSize,"utf-8",new DefaultFileRenamePolicy());
 
 
//name pass subject content 파라미터 가져오기
String name=multi.getParameter("name");
String pass=multi.getParameter("pass");
String subject=multi.getParameter("subject");
String content=multi.getParameter("content");
 
 
//int  readcount=0         Timestamp date =현 시스템 날짜
int readcount=0;
Timestamp time=new Timestamp(System.currentTimeMillis());
//file 업로드된 이름 가져오기
String file=multi.getFilesystemName("file");
 
 
//패키지 board  파일이름  BoardBean 만들기 멤버변수 Getter/Setter
//file set() get() 추가
//BoardBean bb 객체 생성
BoardDTO bb=new BoardDTO();
//멤버변수<=파라미터값 저장
bb.setName(name);
bb.setPass(pass);
bb.setSubject(subject);
bb.setContent(content);
bb.setReadcount(readcount);
bb.setTime(time);
//file set()호출
bb.setFile(file);
 
//패키지 board 파일이름 BoardDAO 만들기
//insertBoard(bb) 메서드만들기
//BoardDAO bdao 객체 생성
//insertBoard(bb) 메서드 호출
BoardDAO bdao=new BoardDAO();
bdao.insertBoard(bb);
 
 
//list.jsp 이동
response.sendRedirect("list.jsp");
%>
 
 
</body>
</html>
cs

 

파일을 올릴 수 있게 하는 업로드 방식을 배워보았다. 화면단에서 <form>에서 type을 enctype="multipart/form-data"  이렇게 선언해줘야 파일을 올릴때 에러가 발생하지 않는다. 저게 처음에 익숙하지 않아서 왜 안되지 하면서 보니 저게 선언이 되어있지 않아서 되지 않았었다. 잊어먹지 말고 꼭 적어주자. 그리고 작업 페이지에서는 해주어야 할 작업들이 좀 많은데 헷갈리지 말고 순서대로 차근히 해보면 되겠다. 그리고 <form>에서 넘어오는 파라미터를 받기 위해서는 보통 request를 사용해서 파라미터를 받아왔는데 파일을 업로드하기 위해서 선행작업을 하며 좀 바뀌게 된다. request가 아니라 multi.으로 선언해야 하는데 처음엔 익숙하지 않으니 잊어먹지 말고 차근히 보면서 해보아야겠다!!

'Jsp' 카테고리의 다른 글

Jsp - 게시글 쓰기  (0) 2020.07.30
Jsp - DAO,Paging 을 활용한 게시판 글목록 불러오기  (1) 2020.07.30
Jsp - paging  (0) 2020.07.26
Jsp - jdbc를 활용한 회원정보활용  (0) 2020.06.27
Jsp - session!!!  (0) 2020.06.27