package com.mossle.core; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.MultipartResolver; public class MultipartHandler { private static Logger logger = LoggerFactory .getLogger(MultipartHandler.class); private MultipartResolver multipartResolver; private MultipartHttpServletRequest multipartHttpServletRequest = null; private MultiValueMap<String, String> multiValueMap = new LinkedMultiValueMap<String, String>(); private MultiValueMap<String, MultipartFile> multiFileMap; public MultipartHandler(MultipartResolver multipartResolver) { this.multipartResolver = multipartResolver; } public void handle(HttpServletRequest request) { if (request instanceof MultipartHttpServletRequest) { logger.debug("force cast to MultipartHttpServletRequest"); MultipartHttpServletRequest req = (MultipartHttpServletRequest) request; this.multiFileMap = req.getMultiFileMap(); logger.debug("multiFileMap : {}", multiFileMap); this.handleMultiValueMap(req); logger.debug("multiValueMap : {}", multiValueMap); return; } if (multipartResolver.isMultipart(request)) { logger.debug("is multipart : {}", multipartResolver.isMultipart(request)); this.multipartHttpServletRequest = multipartResolver .resolveMultipart(request); logger.debug("multipartHttpServletRequest : {}", multipartHttpServletRequest); this.multiFileMap = multipartHttpServletRequest.getMultiFileMap(); logger.debug("multiFileMap : {}", multiFileMap); this.handleMultiValueMap(multipartHttpServletRequest); logger.debug("multiValueMap : {}", multiValueMap); } else { this.handleMultiValueMap(request); logger.debug("multiValueMap : {}", multiValueMap); } } public void clear() { if (multipartHttpServletRequest == null) { return; } multipartResolver.cleanupMultipart(multipartHttpServletRequest); } public void handleMultiValueMap(HttpServletRequest request) { Map<String, String[]> parameterMap = request.getParameterMap(); for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) { String key = entry.getKey(); for (String value : entry.getValue()) { multiValueMap.add(key, value); } } } public MultiValueMap<String, String> getMultiValueMap() { return multiValueMap; } public MultiValueMap<String, MultipartFile> getMultiFileMap() { return multiFileMap; } }