파일을 업로드 할때 <form>태그에서 ENCTYPE="multipart/form-data"라는 애트리뷰트를 반드시 써야 한다.
그렇게 하지 않으면 웹 서버로 데이터를 넘길때 파일의 경로명만 전송되고 파일 내용이 전송되지 않기 때문이다.
그리고 이때 METHOD 애트리뷰트에는 'POST' 값을 지정해야 한다.
** <form>태그의 속성인 method, action, enctype 등은 입력받은 데이터를 어떻게 처리할 것인지 세부적으로 설정하는 데 사용된다.
method는 전송 방식,
action은 전송 목적지,
enctype은 전송되는 데이터 형식을 설정한다.
** enctype
enctype 속성은 다음 세가지의 값으로 지정될 수 있다.
1. application/www-form-urlencoded
디폴트값이다. enctype을 따로 설정하지 않으면 이 값이 설정된다. 폼데이터는 서버로 전송되기 전에 URL-Encode 된다.
2. multipart/form-data
파일이나 이미지를 서버로 전송할 경우 이 방식을 사용한다.
3. text/plain
이 형식은 인코딩을 하지 않은 문자 상태로 전송한다.
============================================================================================================
자바단에서 처리
public boolean insertProduct(HttpServletRequest req){
boolean b = false;
try {
String uploadDir = "C:\\mywork\\sou\\jsp_shopping\\WebContent\\data"; //절대 경로
// String uploadDir = "C:/mywork/sou/jsp_shopping/WebContent/data"; 유닉스방식
MultipartRequest multi = new MultipartRequest(req, uploadDir, 5 * 1024 * 1024, "utf-8", new DefaultFileRenamePolicy());
//MultipartRequest(request객체, 업로드할 절대경로, 파일크기, 인코딩방식, 보안관련)
conn = ds.getConnection();
String sql = "INSERT INTO shop_product VALUES(product_no_seq.nextval,?,?,?,SYSDATE,?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, multi.getParameter("name"));
pstmt.setString(2, multi.getParameter("price"));
pstmt.setString(3, multi.getParameter("detail"));
pstmt.setString(4, multi.getParameter("stock"));
if(multi.getFilesystemName("image") == null)
pstmt.setString(5, "ready.gif");
else
pstmt.setString(5, multi.getFilesystemName("image")); //이미지 경로를 insert할 경우
if(pstmt.executeUpdate() > 0)
b = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(rs != null)rs.close();
if(pstmt != null) pstmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return b;
}
'HTML' 카테고리의 다른 글
HTML5 CSS3 javascirpt 강좌 (0) | 2014.04.27 |
---|---|
HTML5 input date에 오늘 날짜 넣기 (0) | 2014.04.16 |
html5 - sqlDB 사용하기 (0) | 2014.02.14 |
HTML5 - 파일읽기 (0) | 2014.02.14 |
HTML5 - 구글맵 사용하기 (0) | 2014.02.14 |