import java.io.File;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
public class CpnUploadController extends MultiActionController {
private Logger logger = Logger.getLogger(CpnUploadController.class);
private File uploadDir;
public void setUploadDir(File uploadDir) {
this.uploadDir = uploadDir;
}
public ModelAndView insert(HttpServletRequest request, HttpServletResponse response) throws Exception {
logger.debug("### CpnUploadController - insert()");
String resultMessage = "";
response.setContentType("text/plain");
if (! (request instanceof MultipartHttpServletRequest)) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Expected multipart request");
return null;
}
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; // 빈 업로드디렉토리 설정해 둔위치에 위치에 파일을 저장
MultipartFile imgFile = multipartRequest.getFile("f1"); // request의 "f1"을 찾아 file객체에 세팅한다.
final String imgFileName = imgFile.getOriginalFilename().trim();
String filePath = uploadDir.getAbsolutePath() + File.separator;
// 여기에 파일 중복 체크 추가
// 용량 체크
long fileSize = imgFile.getSize();
if(fileSize > 20480000 || fileSize <= 0) {
resultMessage = "20MB 이상의 파일은 업로드 할 수 없습니다.";
}
// 확장자 체크
int pathPoint = imgFileName.lastIndexOf(".");
String filePoint = imgFileName.substring(pathPoint + 1, imgFileName.length());
String fileType = filePoint.toLowerCase();
if(!fileType.equals("jpg") && !fileType.equals("bmp") && !fileType.equals("gif")) {
resultMessage = "이미지 파일만 업로드 가능합니다.";
}
// 파일을 지정한 위치에 upload
File f = new File(filePath + "64");
if(!f.exists()) {
f.mkdirs(); // 디렉토리 생성
}
String finalFnm = filePath + "64" + File.separator + imgFileName;
logger.debug("finalFnm = " + finalFnm);
imgFile.transferTo(new File(finalFnm));
resultMessage = "정상적으로 업로드 하였습니다.";
resultMessage += "\n저장된 파일 => " + finalFnm;
// 여기서 DB에 파일을 포함한 쿠폰정보 저장
logger.debug("resultMessage = "+resultMessage);
ModelAndView mav = new ModelAndView("redirect:uploadForm.html");
mav.addObject("resultMessage", resultMessage);
return mav;
}
public ModelAndView uploadForm(HttpServletRequest request, HttpServletResponse response) {
logger.debug("### CpnUploadController - uploadForm()");
ModelAndView mav = new ModelAndView("/cpOper/cpn_upload");
String resultMessage = request.getParameter("resultMessage");
logger.debug("resultMessage = "+resultMessage);
mav.addObject("resultMessage", resultMessage);
return mav;
}
} |