먼저
apache commons fileupload와 commons io 라이브러리를 클래스패스에 연결
dto
RequestUtil
컨틀롤러 적용
ProductDao dao = new ProductDao();
if (ServletFileUpload.isMultipartContent(request)) {
ParamDto dto = RequestUtil.parseParam(request);
String product_name = dto.getParamMap().get("product_name");
String description = dto.getParamMap().get("description");
int price = Integer.parseInt(dto.getParamMap().get("price").toString());
FileItem item = dto.getFileMap().get("img");
String filename = item.getName();
String path = request.getSession().getServletContext().getRealPath("/images/");
item.write(new File(path + filename));
Product product = new Product();
product.setProduct_name(product_name);
product.setDescription(description);
product.setPrice(new BigDecimal(price));
product.setFilename(filename);
dao.insert(product);
}
return "redirect:/product.do";
package com.sora.webapptest.util;
import com.sora.webapptest.dto.ParamDto;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.util.List;
public class RequestUtil {
public static ParamDto parseParam(HttpServletRequest request) {
ParamDto result = new ParamDto();
ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
upload.setHeaderEncoding("UTF-8");
try {
List<FileItem> fileItemList = upload.parseRequest(request);
for (FileItem fileItem :fileItemList) {
if (fileItem.isFormField()) {
result.getParamMap().put(fileItem.getFieldName(), fileItem.getString("UTF-8"));
} else {
result.getFileMap().put(fileItem.getFieldName(), fileItem);
}
}
} catch (FileUploadException | UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
return result;
}
}
package com.sora.webapptest.dto;
import org.apache.commons.fileupload.FileItem;
import java.util.HashMap;
import java.util.Map;
public class ParamDto {
private Map<String, String> paramMap;
private Map<String, FileItem> fileMap;
public ParamDto() {
paramMap = new HashMap<>();
fileMap = new HashMap<>();
}
public Map<String, String> getParamMap() {
return paramMap;
}
public void setParamMap(Map<String, String> paramMap) {
this.paramMap = paramMap;
}
public Map<String, FileItem> getFileMap() {
return fileMap;
}
public void setFileMap(Map<String, FileItem> fileMap) {
this.fileMap = fileMap;
}
}
'JAVA' 카테고리의 다른 글
DispatcherServlet (0) | 2023.01.23 |
---|---|
Dao JDBC #3 (0) | 2023.01.18 |
DAO JDBC #2 (0) | 2023.01.18 |
DAO jdbc (0) | 2023.01.18 |
Servletでいまの時間を表示する (0) | 2023.01.01 |