728x90
반응형
쇼핑몰 프로젝트의 마무리 단계 파일업로드
필요한 라이브러리 : cos.jar("오렐리 출판사"에서 개발)
전역변수로 선언된 (ProductMgr.java)
private static final String UPLOAD = "C:/shop/data/";
private static final String ENCTYPE = "UTF-8";
private static final int MAXSIZE = 10*1024*1024;
파일 추가
public boolean insertProduct(HttpServletRequest req) {
Connection con = null;
PreparedStatement pstmt = null;
String sql = null;
boolean flag = false;
try {
MultipartRequest multi =
new MultipartRequest(req, UPLOAD, MAXSIZE, ENCTYPE, new DefaultFileRenamePolicy());
con = pool.getConnection();
sql = "insert into product_tbl (no,name,price,detail,rdate, stock,image) values (product_seq.nextval,?,?,?,?,?,?)";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, multi.getParameter("name"));
pstmt.setInt(2, Integer.parseInt(multi.getParameter("price")));
pstmt.setString(3, multi.getParameter("detail"));
pstmt.setString(4, UtilMgr.getDay());
pstmt.setInt(5, Integer.parseInt(multi.getParameter("stock")));
if(multi.getFilesystemName("image")==null)
pstmt.setString(6, "ready.gif");
else
pstmt.setString(6, multi.getFilesystemName("image"));
if(pstmt.executeUpdate()==1)
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeClose(con, pstmt);
}
return flag;
}
파일 업데이트
public boolean updateProduct(HttpServletRequest req) {
Connection con = null;
PreparedStatement pstmt = null;
String sql = null;
boolean flag = false;
try {
MultipartRequest multi = new MultipartRequest(req, UPLOAD, MAXSIZE, ENCTYPE, new DefaultFileRenamePolicy());
con = pool.getConnection();
if(multi.getFilesystemName("image")==null) {
//파일은 선택을 안 함.
sql = "update product_tbl set name=?, price=?, detail=?, stock=? where no =?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, multi.getParameter("name"));
pstmt.setInt(2, Integer.parseInt(multi.getParameter("price")));
pstmt.setString(3, multi.getParameter("detail"));
pstmt.setInt(4, Integer.parseInt(multi.getParameter("stock")));
pstmt.setInt(5, Integer.parseInt(multi.getParameter("no")));
}else {
///파일까지 수정함.
sql = "update product_tbl set name=?, price=?, detail=?, stock=?, image=? where no =?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, multi.getParameter("name"));
pstmt.setInt(2, Integer.parseInt(multi.getParameter("price")));
pstmt.setString(3, multi.getParameter("detail"));
pstmt.setInt(4, Integer.parseInt(multi.getParameter("stock")));
pstmt.setString(5, multi.getFilesystemName("image"));
pstmt.setInt(6, Integer.parseInt(multi.getParameter("no")));
}
if(pstmt.executeUpdate()==1) flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeClose(con, pstmt);
}
return flag;
}
파일 삭제
public boolean deleteProduct(int no) {
Connection con = null;
PreparedStatement pstmt = null;
String sql = null;
boolean flag = false;
try {
con = pool.getConnection();
sql = "delete from product_tbl where no = ?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, no);
if(pstmt.executeUpdate()==1)
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeClose(con, pstmt);
}
return flag;
}
productUpdate.jsp 상단 폼영역에 사용된 코드
: <form method="post" action="productProc.jsp?flag=update" enctype="multipart/form-data">
<img src="../data/<%=product.getImage()%>"><br/>
<input type="file" name="image"></td>
</form>
**
<form ~~~enctype="multipart/form-data">
<input type="file" name="image" />
</form>
** file 타입은 클릭시에 파일을 선택할 수 있는 창이 뜨게 해준다.
request 객체를 전달할 경우
=> 전달 받는 쪽 : HttpServeltRequest 타입
MultipartRequest타입 객체를 이용
new MultipartRequest(request객체, 업로드경로, 업로드최대크기, ENCTYPE("UTF-8"), 동일파일업로드시파일명자동변경);
동일 파일업로드시 이름 => new DefaultFileRenamePolicy();
728x90
반응형
'Learn > KH정보교육원' 카테고리의 다른 글
[KH정보교육원 당산] 46일차 (JavaScript - 입력값 추가,삭제, 기념일 계산, 랜덤) (0) | 2021.05.13 |
---|---|
[KH정보교육원 당산] 45일차 (JavaScript 시작) (0) | 2021.05.12 |
[KH정보교육원 당산] 42일차 (쇼핑몰 - 주문) (0) | 2021.05.07 |
[KH정보교육원 당산] 41일차(쇼핑몰 - 회원가입부분) (0) | 2021.05.06 |
[KH정보교육원 당산] 40일차(CSS 연습) (0) | 2021.05.04 |