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();
    }

你可能感兴趣的:(SpringMVC)