์นดํ
๊ณ ๋ฆฌ ์์
[ Project / Servlet · JSP ] 1์ฐจ ๊ณผ์ Model 2 ๋ฐฉ์ - (2) ๊ฒ์ํ ๋ง๋ค๊ธฐ ( ๊ฒ์๋ฌผ ์ ์ฅ · ์์ · ์ญ์ )
jimin-log
2023. 4. 23. 16:54
๐ก ๊ฒ์ํ์ ์ถ๊ฐ๋์ด์ผ ํ ๊ธฐ๋ฅ
ํ์ด์ง ๊ตฌํ / ๋ฆฌ์คํธ ๊ฒ์ ๊ธฐ๋ฅ ๊ตฌํ / ๊ฒ์๋ฌผ ์ ์ฅ ์ ์ฒจ๋ถํ์ผ ์ ์ฅ, ์์ , ์ญ์ / ์์ธ ํ์ด์ง ์กฐํ์ ์ถ๊ฐ
์ฒจ๋ถํ์ผ ์ ์ฅ์ผ๋ก ์ด๋ฒ์๋ cos ๋์ , apache commons fileupload ๋ฅผ ์ฌ์ฉํ๋ค.
์๋ ๋ ํ์ผ์ ๋ค์ด๋ฐ์ lib ํด๋์ ๋ฃ์ด์ฃผ๋ฉด ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
commons-fileupload-1.3.3.jar
commons-io-2.7.jar
๐ซ FileUploadServlet.java
1. ๊ฒ์๋ฌผ ์ ์ฅ (์ฒจ๋ถํ์ผ ์ถ๊ฐ)
package com.javaex.controller;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
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 javax.servlet.http.HttpSession;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.javaex.dao.BoardDao;
import com.javaex.dao.BoardDaoImpl;
import com.javaex.util.WebUtil;
import com.javaex.vo.BoardVo;
import com.javaex.vo.UserVo;
@WebServlet("/fileUpload")
public class FileUploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String CHARSET = "utf-8";
private static final String ATTACHES_DIR = "C:\\java_work\\java_fast\\mysite_jimin\\WebContent\\attaches";
private static final int LIMIT_SIZE_BYTES = 1024 * 1024;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
request.setCharacterEncoding(CHARSET);
PrintWriter out = response.getWriter();
// ํ์ผ ์ค์
File attachesDir = new File(ATTACHES_DIR);
DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
fileItemFactory.setRepository(attachesDir);
fileItemFactory.setSizeThreshold(LIMIT_SIZE_BYTES);
ServletFileUpload fileUpload = new ServletFileUpload(fileItemFactory);
String separator = null;
String fileName = null;
String fileName_sub = null;
File uploadFile = null;
try {
List<FileItem> items = fileUpload.parseRequest(request);
// ์์ฑ์ ๋ฒํธ
UserVo authUser = getAuthUser(request);
int userNo = authUser.getNo();
BoardVo vo = new BoardVo();
vo.setUserNo(userNo);
String title = items.get(0).getString(CHARSET); // title ๊ฐ ๋ฆฌํด
String content = items.get(1).getString(CHARSET);// content ๊ฐ ๋ฆฌํด
vo.setTitle(title);
vo.setContent(content);
for (FileItem item : items) {
int a =+ 1;
if (item.isFormField()) { //true ์ผ๋ฐ ํ
์คํธ
System.out.printf("ํ๋ผ๋ฏธํฐ ๋ช
: %s, ํ๋ผ๋ฏธํฐ ๊ฐ : %s \n", item.getFieldName(), item.getString(CHARSET));
} else {
//ํ์ผ
System.out.printf("ํ๋ผ๋ฏธํฐ ๋ช
: %s, ํ์ผ ๋ช
: %s, ํ์ผ ํฌ๊ธฐ : %s bytes \n", item.getFieldName(), item.getName(), item.getSize());
if (item.getSize() > 0) {
separator = File.separator;
int index = item.getName().lastIndexOf(separator);
fileName = item.getName().substring(index + 1);
uploadFile = new File(ATTACHES_DIR + separator + fileName);
fileName_sub = fileName;
if (uploadFile.exists()){
for(int k=0; true; k++){
//ํ์ผ๋ช
์ค๋ณต์ ํผํ๊ธฐ ์ํ ์ผ๋ จ ๋ฒํธ๋ฅผ ์์ฑํ์ฌ
//ํ์ผ๋ช
์ผ๋ก ์กฐํฉ
uploadFile = new File(ATTACHES_DIR, "("+k+")"+fileName);
//์กฐํฉ๋ ํ์ผ๋ช
์ด ์กด์ฌํ์ง ์๋๋ค๋ฉด, ์ผ๋ จ๋ฒํธ๊ฐ
//๋ถ์ ํ์ผ๋ช
๋ค์ ์์ฑ
if(!uploadFile.exists()){ //์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ
fileName = "("+k+")"+fileName;
break;
}
}
}
vo.setFilesize((int)item.getSize());
vo.setFilename(fileName);
vo.setFileName_sub(fileName_sub);
item.write(uploadFile);
} //item.getSize()
}
}//for ๋ฌธ
System.out.println("ํ์ผ์
๋ก๋ ์ค ----------------");
System.out.println(vo);
BoardDao dao = new BoardDaoImpl();
dao.insert(vo);
System.out.println("ํ์ผ์
๋ก๋ ์๋ฃ---------");
System.out.printf("fileName : "+ fileName + "/fileName_sub : "+ fileName_sub + " / uploadFile : "+ uploadFile +" / separator" + separator);
WebUtil.redirect(request, response, "/mysite_jimin/board");
out.println("<h1>ํ์ผ ์
๋ก๋ ์๋ฃ</h1>");
} catch (Exception e) {
// ํ์ผ ์
๋ก๋ ์ฒ๋ฆฌ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ
e.printStackTrace();
out.println("<h1>ํ์ผ ์
๋ก๋ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์์ต๋๋ค.</h1>");
}
}
// ๋ก๊ทธ์ธ ๋์ด ์๋ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.
protected UserVo getAuthUser(HttpServletRequest request) {
HttpSession session = request.getSession();
UserVo authUser = (UserVo) session.getAttribute("authUser");
return authUser;
}
}