//파일 조작
- 파일 업로드/다운로드를 위해서는 cos jar파일이 필요하다. (https://mvnrepository.com)
- <form> 태그에 enctype 속성을 추가해야 한다.
enctype="multipart/form-data"
- 업로드 주요 코드
String path = request.getRealPath("fileFolder");
int size = 1024 * 1024 * 100;
String filename ="";
String orgfilename = "";
MultipartRequest multi = new MultipartRequest(request, path, size, "UTF-8", new DefaultFileRenamePolicy());
Enumeration e = multi.getFileNames();
while(e.hasMoreElements()) {
String orgfilename = multi.getOriginalFileName(file);
String filename = multi.getFilesystemName(file);
}
- 다운로드 주요 코드
String fileName = request.getParameter("filename");
String orgfileName = request.getParameter("orgfilename");
String savePath = "업로드폴더명";
ServletContext context = getServletContext();
String sDownloadPath = context.getRealPath(savePath);
String sFilePath = sDownloadPath + "/" + fileName;
byte b[] = new byte[4096];
FileInputStream in = new FileInputStream(sFilePath);
String sMimeType = getServletContext().getMimeType(sFilePath);
if (sMimeType == null){
sMimeType = "application/octet-stream";
}
response.setContentType(sMimeType);
String agent = request.getHeader("User-Agent");
boolean ieBrowser = (agent.indexOf("MSIE") > -1) || (agent.indexOf("Trident") > -1);
if (ieBrowser) {
fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("/+", "%20");
} else {
fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
}
orgfileName = new String(orgfileName.getBytes("UTF-8"), "ISO-8859-1");
response.setHeader("Content-Disposition", "attachment; filename= " + orgfileName);
ServletOutputStream out2 = response.getOutputStream();
int numRead;
while ((numRead = in.read(b, 0, b.length)) != -1) {
out2.write(b, 0, numRead);
}
out2.flush();
out2.close();
in.close();
<%@ 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>
<form action="fileformok.jsp" method="post" enctype="multipart/form-data">
<div>파일: <input type="file" name="file"></div>
<div><input type="submit" value="업로드"></div>
</form>
</body>
</html>
<%@page import="java.util.Enumeration"%>
<%@page import="com.oreilly.servlet.MultipartRequest"%>
<%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getRealPath("fileFolder");
int size = 1024 * 1024 * 100; //100M
String filename ="";
String orgfilename = "";
try {
MultipartRequest multi = new MultipartRequest(request, path, size, "UTF-8", new DefaultFileRenamePolicy());
Enumeration e = multi.getFileNames();
String file = e.nextElement().toString();
orgfilename = multi.getOriginalFileName(file);
filename = multi.getFilesystemName(file);
} catch(Exception e) {
e.printStackTrace();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>File upload success!</h2>
</body>
</html>
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("/multifile.do")
public class MultiFile extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/multifile.jsp");
dispatcher.forward(req, resp);
}
}
<%@ 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>
#files > div { margin-bottom: 5px; }
.item { margin-bottom: 5px; }
</style>
</head>
<body>
<!-- 다중 파일 업로드 -->
<h1>다중 파일 업로드</h1>
<form method="POST" action="/file/multifileok.do" enctype="multipart/form-data">
<div>
<div>이름: </div>
<div><input type="text" name="name"></div>
</div>
<div id="files">
<div>파일: </div>
<div class="item"><input type="file" name="attach1"></div>
<div id="list"></div>
<div><input type="button" value="+" id="btnadd"></div>
</div>
<div>
<input type="submit" value="업로드">
</div>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
let n = 2;
$('#btnadd').click(() => {
$('#list').append(
`<div class="item">
<input type="file" name="attach\${n}">
<input type="button" value="X"
onclick="$(this).parent().remove()">
</div>`);
n++;
});
</script>
</body>
</html>
package com.test.file;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
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("/multifileok.do")
public class MultiFileOk extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
List<String> olist = new ArrayList<String>();
List<String> flist = new ArrayList<String>();
try {
MultipartRequest multi = new MultipartRequest(
req,
req.getRealPath("/files"),
1024 * 1024 * 100,
"UTF-8",
new DefaultFileRenamePolicy()
);
Enumeration e = multi.getFileNames();
while(e.hasMoreElements()) {
String file = e.nextElement().toString();
String orgfilename = multi.getOriginalFileName(file);
String filename = multi.getFilesystemName(file);
olist.add(orgfilename);
flist.add(filename);
req.setAttribute("olist", olist);
req.setAttribute("flist", flist);
}
} catch (Exception e) {
e.printStackTrace();
}
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/multifileok.jsp");
dispatcher.forward(req, resp);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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>
<c:forEach var="i" begin="0" end="${flist.size()-1}">
<div>다운로드: <a href="/file/download.do?filename=${flist[i]}&orgfilename=${olist[i]}">${olist[i]}</a></div>
</c:forEach>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
</script>
</body>
</html>
package com.test.file;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/download.do")
public class Download extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//제어 가능
//1. 다운로드 횟수 저장 > update table set download = download + 1..
//2. 권한 통제 > 현재 세션(사용자) + 다운로드 권한 체크
String fileName = request.getParameter("filename");
String orgfileName = request.getParameter("orgfilename");
String savePath = "files";
ServletContext context = getServletContext();
String sDownloadPath = context.getRealPath(savePath);
String sFilePath = sDownloadPath + "/" + fileName;
byte b[] = new byte[4096];
FileInputStream in = new FileInputStream(sFilePath);
String sMimeType = getServletContext().getMimeType(sFilePath);
System.out.println("sMimeType>>>" + sMimeType);
if (sMimeType == null)
{
sMimeType = "application/octet-stream";
//text/html
//image/gif
//application/zip
}
response.setContentType(sMimeType);
String agent = request.getHeader("User-Agent");
boolean ieBrowser = (agent.indexOf("MSIE") > -1) || (agent.indexOf("Trident") > -1);
if (ieBrowser) {
fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("/+", "%20");
} else {
fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
}
orgfileName = new String(orgfileName.getBytes("UTF-8"), "ISO-8859-1");
response.setHeader("Content-Disposition", "attachment; filename= " + orgfileName);
ServletOutputStream out2 = response.getOutputStream();
int numRead;
while ((numRead = in.read(b, 0, b.length)) != -1) {
out2.write(b, 0, numRead);
}
out2.flush();
out2.close();
in.close();
}
}
package com.test.file;
public class FileDTO {
private String seq;
private String name;
private String filename;
private String regdate;
public String getSeq() {
return seq;
}
public void setSeq(String seq) {
this.seq = seq;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
public String getRegdate() {
return regdate;
}
public void setRegdate(String regdate) {
this.regdate = regdate;
}
}
package com.test.file;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import com.test.my.DBUtil;
//DAO, Data Access Object
// - DB 작업 담당자
// - 데이터 작업 담당자
public class FileDAO {
private Connection con;
private Statement st;
private PreparedStatement pstat;
private ResultSet rs;
public FileDAO() {
this.con = DBUtil.open();
}
public int add(FileDTO dto) {
try {
String sql = "insert into tblFile (seq, name, filename, regdate) values (seqFile.nextVal, ?, ?, default)";
pstat = con.prepareStatement(sql);
pstat.setString(1, dto.getName());
pstat.setString(2, dto.getFilename());
return pstat.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
public List<FileDTO> list() {
try {
String sql = "select seq, filename from tblFile order by seq desc";
st = con.createStatement();
rs = st.executeQuery(sql);
List<FileDTO> list = new ArrayList<FileDTO>();
while(rs.next()) {
//레코드 1줄 > FileDTO 1개
FileDTO dto = new FileDTO();
dto.setSeq(rs.getString("seq"));
dto.setFilename(rs.getString("filename"));
list.add(dto);
}
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public FileDTO get(String seq) {
try {
String sql = "select * from tblFile where seq = ?";
pstat = con.prepareStatement(sql);
pstat.setString(1, seq);
rs = pstat.executeQuery();
if(rs.next()) {
FileDTO dto = new FileDTO();
dto.setSeq(rs.getString("seq"));
dto.setName(rs.getString("name"));
dto.setFilename(rs.getString("filename"));
dto.setRegdate(rs.getString("regdate"));
return dto;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public int edit(FileDTO dto) {
try {
String sql;
if(dto.getFilename() != null && !dto.getFilename().equals("")) {
sql = "update tblFile set name = ?, filename = ? where seq = ?";
pstat = con.prepareStatement(sql);
pstat.setString(1, dto.getName());
pstat.setString(2, dto.getFilename());
pstat.setString(3, dto.getSeq());
} else {
sql = "update tblFile set name = ? where seq = ?";
pstat = con.prepareStatement(sql);
pstat.setString(1, dto.getName());
pstat.setString(2, dto.getSeq());
}
return pstat.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
public int remove(String seq) {
try {
String sql = "delete from tblFile where seq = ?";
pstat = con.prepareStatement(sql);
pstat.setString(1, seq);
return pstat.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
}
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("/add.do")
public class Add extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/add.jsp");
dispatcher.forward(req, resp);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Image Viewer</title>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>
</style>
</head>
<body>
<h1>Image Viewer</h1>
<form method="POST" action="/file/addok.do" enctype="multipart/form-data">
<table>
<tr>
<th>작성자</th>
<td><input type="text" name="name" class="short" required autocomplete="off" autofocus></td>
</tr>
<tr>
<th>이미지</th>
<!-- <td><input type="file" name="attach" required accept=".gif, .png, .jpg, .jpeg"></td> -->
<!-- <td><input type="file" name="attach" required accept="image/gif, image/jpeg, image/png"></td> -->
<td><input type="file" name="attach" required accept="image/*"></td>
</tr>
</table>
<div>
<input type="button" value="돌아가기" onclick="history.back();">
<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>
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("/addok.do")
public class AddOk extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1. 파일 업로드 처리
//2. DB 처리
String name = "";
String filename = "";
//1. 파일 업로드 처리
try {
MultipartRequest multi = new MultipartRequest(
req,
req.getRealPath("/files"),
1024 * 1024 * 100,
"UTF-8",
new DefaultFileRenamePolicy()
);
//System.out.println(req.getRealPath("/files"));
filename = multi.getFilesystemName("attach");
name = multi.getParameter("name");
} catch (Exception e) {
e.printStackTrace();
}
//2. DB처리
FileDAO dao = new FileDAO();
FileDTO dto = new FileDTO();
dto.setName(name);
dto.setFilename(filename);
int result = dao.add(dto); //성공(1), 실패(0)
req.setAttribute("result", result);
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/addok.jsp");
dispatcher.forward(req, resp);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Image Viewer</title>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>
</style>
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
<c:if test="${result == 1}">
location.href = '/file/list.do';
</c:if>
<c:if test="${result == 0}">
alert('failed');
history.back();
</c:if>
</script>
</body>
</html>
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("/list.do")
public class List extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1. DB 작업 > DAO 위임 > select
//2. 결과 반환(List<FileDTO>)
//3. JSP 호출하기
FileDAO dao = new FileDAO();
java.util.List<FileDTO> list = dao.list();
req.setAttribute("list", list);
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/list.jsp");
dispatcher.forward(req, resp);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Image Viewer</title>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>
img {
display: block;
width: 140px;
height: 140px;
margin: 0 auto;
object-fit: cover;
cursor: pointer;
}
</style>
</head>
<body>
<h1>Image Viewer</h1>
<table>
<tr>
<c:forEach items="${list}" var="dto" varStatus="status">
<td>
<img src="/file/files/${dto.filename}" onclick="view(${dto.seq});">
</td>
<c:if test="${status.count % 5 == 0}">
</tr>
<tr>
</c:if>
</c:forEach>
<c:forEach var="i" begin="1" end="${5 - list.size() % 5}">
<td></td>
</c:forEach>
</tr>
</table>
<div>
<input type="button" value="등록하기" onclick="location.href='/file/add.do'">
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
function view(seq) {
location.href = '/file/view.do?seq=' + seq;
}
</script>
</body>
</html>
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("/view.do")
public class View extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1. 번호 가져오기
//2. DB 작업 > DAO 위임 > select where seq = ?
//3. 결과 반환 > JSP 호출하기
String seq = req.getParameter("seq");
FileDAO dao = new FileDAO();
FileDTO dto = dao.get(seq);
req.setAttribute("dto", dto);
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/view.jsp");
dispatcher.forward(req, resp);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Image Viewer</title>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>
img {
display: block;
margin: 20px auto;
max-width: 700px;
}
</style>
</head>
<body>
<h1>Image Viewer</h1>
<table>
<tr>
<td colspan="2"><img src="/file/files/${dto.filename}"></td>
</tr>
<tr>
<td>${dto.name}</td>
<td>${dto.regdate}</td>
</tr>
</table>
<div>
<input type="button" value="돌아가기" onclick="location.href='/file/list.do';">
<input type="button" value="수정하기" onclick="location.href='/file/edit.do?seq=${dto.seq}';">
<input type="button" value="삭제하기" onclick="location.href='/file/delok.do?seq=${dto.seq}';">
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
</script>
</body>
</html>
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("/edit.do")
public class Edit extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1. 번호 가져오기
//2. DB 작업 > DAO 위임 > select
//3. 결과 반환 > JSP 호출하기
String seq = req.getParameter("seq");
FileDAO dao = new FileDAO();
FileDTO dto = dao.get(seq);
req.setAttribute("dto", dto);
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/edit.jsp");
dispatcher.forward(req, resp);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Image Viewer</title>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>
</style>
</head>
<body>
<h1>Image Viewer</h1>
<form method="POST" action="/file/editok.do" enctype="multipart/form-data">
<table>
<tr>
<th>작성자</th>
<td><input type="text" name="name" class="short" required autocomplete="off" autofocus value="${dto.name}"></td>
</tr>
<tr>
<th>이미지</th>
<td>
<input type="file" name="attach">
<span>${dto.filename}</span>
</td>
</tr>
</table>
<div>
<input type="button" value="돌아가기" onclick="history.back();">
<input type="submit" value="수정하기">
</div>
<input type="hidden" name="seq" value="${dto.seq}">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
$('input[name=attach]').change(function() {
if ($(this).val() != '') {
$(this).next().css('text-decoration', 'line-through');
} else {
$(this).next().css('text-decoration', 'none');
}
});
</script>
</body>
</html>
package com.test.file;
import java.io.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("/editok.do")
public class EditOk extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1. 데이터 가져오기
//2. DB 작업 > DAO 위임 > update
String name = "";
String filename = "";
String seq = "";
try {
MultipartRequest multi = new MultipartRequest(
req,
req.getRealPath("/files"),
1024 * 1024 * 100,
"UTF-8",
new DefaultFileRenamePolicy()
);
System.out.println("attach: " + multi.getFilesystemName("attach"));
name = multi.getParameter("name");
filename = multi.getFilesystemName("attach");
seq = multi.getParameter("seq");
} catch (Exception e) {
e.printStackTrace();
}
FileDAO dao = new FileDAO();
if (filename != "") {
//기존 파일 삭제 > 새 파일 교체
File file = new File(req.getRealPath("/files") + "\\" + dao.get(seq).getFilename());
file.delete();
}
FileDTO dto = new FileDTO();
dto.setName(name);
dto.setFilename(filename);
dto.setSeq(seq);
int result = dao.edit(dto);
req.setAttribute("result", result);
req.setAttribute("seq", seq);
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/editok.jsp");
dispatcher.forward(req, resp);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
<c:if test="${result == 1}">
location.href = '/file/view.do?seq=${seq}';
</c:if>
<c:if test="${result == 0}">
alert('failed');
history.back();
</c:if>
</script>
</body>
</html>
package com.test.file;
import java.io.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("/delok.do")
public class DelOk extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1. 데이터 가져오기(seq)
//2. 파일 삭제
//3. DB작업 > DAO 위임 > delete
String seq = req.getParameter("seq");
FileDAO dao = new FileDAO();
//사진 삭제할 떄는 DB 작업 전에 먼저 지우기!
FileDTO dto = dao.get(seq);
try {
File file = new File(req.getRealPath("/files") + "\\" + dto.getFilename());
file.delete();
} catch (Exception e) {
e.printStackTrace();
}
int result = dao.remove(seq);
req.setAttribute("result", result);
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/delok.jsp");
dispatcher.forward(req, resp);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Image Viewer</title>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>
</style>
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
<c:if test="${result == 1}">
location.href = '/file/list.do';
</c:if>
<c:if test="${result == 0}">
alert('failed');
history.back();
</c:if>
</script>
</body>
</html>
'서버 > Servlet-JSP' 카테고리의 다른 글
[Servlet-JSP] URL 패턴, FrontController 패턴, Command 패턴 (0) | 2023.01.29 |
---|---|
[Servlet-JSP] EL(Expression Language) (0) | 2023.01.23 |
[Servlet-JSP] DAO, DTO, lombok (0) | 2023.01.20 |
[Servlet-JSP] 입력 데이터 - 상태 유지 (0) | 2023.01.16 |
[Servlet-JSP] Cookie (0) | 2023.01.15 |