2023. 1. 30. 00:53

먼저

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
Posted by 다만사