spring MVC 백엔드에서 업로드된 파일을 받아들이고 다운로드하는 방법

5584 단어 SpringMVC
MultipartHttpServletRequest 객체를 통해 프런트엔드에서 업로드된 파일을 수락합니다.
public static Map upload(HttpServletRequest request) throws IOException{
        // 
        MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
        // 
        Map fileMap = mRequest.getFileMap();
        //    request.getSession().getServletContext().getRealPath() 
        String ctxPath = request.getSession().getServletContext().getRealPath("/")
                + FileOperateUtil.FILEDIR;
        File file = new File(ctxPath);
        if (!file.exists()) {
            file.mkdir();
        }
        Map result = new HashMap();
        Iterator.Entry> it = fileMap.entrySet().iterator();
        // hasNext()  , next() 。
        while(it.hasNext()){
             Map.Entry entry = it.next();
             MultipartFile mFile = entry.getValue();
             if(mFile.getSize() != 0 && !"".equals(mFile.getName())){
                 write(mFile.getInputStream(), new FileOutputStream(ctxPath+mFile.getOriginalFilename()));
                result.put(mFile.getName(), mFile.getOriginalFilename());
             }
            }

        return result;
    }

파일 다운로드
public static void download(HttpServletRequest request,
            HttpServletResponse response, String storeName, String contentType,
            String realName) throws Exception {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;

        String ctxPath = request.getSession().getServletContext()
                .getRealPath("/")
                + " ";
        String downLoadPath = ctxPath + storeName;

        long fileLength = new File(downLoadPath).length();

        response.setContentType(contentType);
        response.setHeader("Content-disposition", "attachment; filename="
                + new String(realName.getBytes("utf-8"), "ISO8859-1"));
        response.setHeader("Content-Length", String.valueOf(fileLength));

        bis = new BufferedInputStream(new FileInputStream(downLoadPath));
        bos = new BufferedOutputStream(response.getOutputStream());
        byte[] buff = new byte[2048];
        int bytesRead;
        while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
            bos.write(buff, 0, bytesRead);
        }
        bis.close();
        bos.close();
    }

좋은 웹페이지 즐겨찾기