[JSP] - 이미지 DB 처리 및 이미지 출력
○ 이미지 DB 처리 및 이미지 출력 |
// index.jsp : 이미지 파일을 올리기 위한 폼 <body> <!-- enctype은 파입 업로드에서 무조건 사용되어야한다 --> <form action="uploadAction.jsp" method="post" enctype="multipart/form-data"> 파일 : <input type="file" name="file"><br> <input type="submit" value="업로드"><br> </form> </body> // uploadAction : 이미지 경로를 DB 저장 및 프로젝트 폴더에 저장 <!-- 파일업로드 위한 라이브러리 임포트 --> <%@ page import="file.fileDAO" %> <%@ page import="java.io.File" %> <!-- 파일 이름이 동일한게 나오면 자동으로 다른걸로 바꿔주고 그런 행동 해주는것 --> <%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %> <!-- 실제로 파일 업로드 하기 위한 클래스 --> <%@ page import="com.oreilly.servlet.MultipartRequest" %> <!-- 위에것들 head 태그 위에 추가해줄 것 --> <body> <% // 해당 폴더에 이미지를 저장시킨다 String uploadDir =this.getClass().getResource("").getPath(); uploadDir = uploadDir.substring(1,uploadDir.indexOf(".metadata"))+"uploadTest/WebContent/uploadImage"; out.println("절대경로 : " + uploadDir + "<br/>");
// 총 100M 까지 저장 가능하게 함 int maxSize = 1024 * 1024 * 100; String encoding = "UTF-8";
// 사용자가 전송한 파일정보 토대로 업로드 장소에 파일 업로드 수행할 수 있게 함 MultipartRequest multipartRequest = new MultipartRequest(request, uploadDir, maxSize, encoding, new DefaultFileRenamePolicy());
// 중복된 파일이름이 있기에 fileRealName이 실제로 서버에 저장된 경로이자 파일 // fineName은 사용자가 올린 파일의 이름이다 // 이전 클래스 name = "file" 실제 사용자가 저장한 실제 네임 String fileName = multipartRequest.getOriginalFileName("file"); // 실제 서버에 업로드 된 파일시스템 네임 String fileRealName = multipartRequest.getFilesystemName("file");
// 디비에 업로드 메소드 new fileDAO().upload(fileName, fileRealName); out.write("파일명 : " + fileName + "<br>"); out.write("실제파일명 : " + fileRealName + "<br>"); %> // fileDAO.java : 이미지 파일 DB 처리 public class fileDAO { private Connection conn;
// 생성자를 통해 db연결 해줌 public fileDAO() { try { String dbURL = "jdbc:mysql://localhost:3306/filetest"; String dbID = "root"; String dbPW = "wlgns930"; Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(dbURL, dbID, dbPW); } catch(Exception e) { e.printStackTrace(); } }
public int upload(String fileName, String fileRealName) { String SQL = "INSERT INTO FILE VALUES (?, ?)"; try { PreparedStatement pstmt = conn.prepareStatement(SQL); pstmt.setString(1, fileName); pstmt.setString(2, fileRealName); return pstmt.executeUpdate(); } catch(Exception e) { e.printStackTrace(); } return -1; } } cos.jar 는 WEB-INF - lib에 추가시킬 것! |
'JSP 개발 참고' 카테고리의 다른 글
[JSP] - 파일 enctype="multipart/form-data" 사용 시 request.getParameter null 해결방법 (0) | 2018.05.02 |
---|---|
[JSP] - 네이버 스마트에디터 사용 (0) | 2018.05.02 |
[JSP] - 세션 처리 및 로그아웃 (0) | 2018.05.01 |
[JSP] - 회원가입 시 아이디 중복체크 (0) | 2018.05.01 |
[JSP] - 회원가입 + 로그인 DB 처리 (0) | 2018.04.30 |