9.File upload / download

Edit

이 장에서는 넥사크로 플랫폼에서의 파일 업로드 / 다운로드에 대한 내용을 설명한다.

내용은 예제 형식으로 제공되며, 사이트에 맞게 수정되어져야 한다.

9.1File Upload

파일 데이터를 업로드 하는 경우 Spring의 MultipartHttpServletRequest를 이용하여 처리 한다.

아래는 해당 처리에 대한 sample 이다.

@Controller
public class FileController {

    @RequestMapping(value = "/uploadFiles.do")
    public NexacroResult uploadFiles(HttpServletRequest request
                    , HttpServletResponse response) throws Exception {
        
        if(!(request instanceof MultipartHttpServletRequest)) {
            if(log.isDebugEnabled()) {
                log.debug("Request is not a MultipartHttpServletRequest");
            }
            return new NexacroResult();
        }
        
        MultipartHttpServletRequest multipartRequest = 
                                    (MultipartHttpServletRequest) request;

        // parameter and multipart parameter
        Enumeration<String> parameterNames = multipartRequest.getParameterNames();
        
        // files..
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        String filePath = getFilePath();
        
        Set<String> keySet = fileMap.keySet();
        for(String name: keySet) {
            MultipartFile multipartFile = fileMap.get(name);
            String originalFilename = multipartFile.getOriginalFilename();

            // upload some logic…

            if(log.isDebugEnabled()) {
                log.debug("uploaded file write success. file={}", 
                                                    originalFilename);
            }
        }

        return new NexacroResult();
    }
}

9.2File Download

파일을 다운로드 할 경우 NexacroFileResult를 이용하여 데이터를 전달한다.

아래는 파일 다운로드에 대한 예제이다.

@Controller
public class FileController {    
    
    @RequestMapping(value = "/advancedDownloadFile.do")
    public NexacroFileResult downloadFile(
                                HttpServletRequest request
                                , @RequestParam String fileName
                                ) throws Exception {
        
        String characterEncoding = request.getCharacterEncoding();
        if(characterEncoding == null) {
            characterEncoding = PlatformType.DEFAULT_CHAR_SET;
        }

        String realFileName;
        
        // some logic… 

        File file = new File(realFileName);
        
        NexacroFileResult result = new NexacroFileResult(file);
        // default - application/octet-stream
        // result.setContentType(contentType); // set MIME TYPE
        
        return result;
    }
}