springMVC后台如何接受前端上传的文件,与及下载文件

通过MultipartHttpServletRequest 对象来接受前端上传的文件

public static Map<String, Object> upload(HttpServletRequest request) throws IOException{
        //文件上传的请求
        MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
        //获取请求的参数
        Map<String, MultipartFile> 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<String, Object> result = new HashMap<String, Object>();
        Iterator<Map.Entry<String, MultipartFile>> it = fileMap.entrySet().iterator();
        //用hasNext() 判断是否有值,用next()方法把元素取出。
        while(it.hasNext()){
             Map.Entry<String, MultipartFile> 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;
    }
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

下载文件

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();
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值