springmvc文件下载

    /***
     * 下载
     * @return
     * @throws IOException
     */
    @RequestMapping(value="/downFile.do")
    public ResponseEntity<byte[]> downFile(HttpServletRequest request,HttpServletResponse response) throws IOException{
        
        //先获取路径
        String path = request.getSession().getServletContext().getRealPath("/index/2016-09-05-01-回顾.wmv");
        //通过file读取文件
        File file =new File(path);
        //获得http请求头(通过springmvc自带下载器下载(方式一))
//        HttpHeaders headers = new HttpHeaders();
//        //判读是否存在
//        if(file.exists()){
//        //设置中文编码
//        String fileName = new String("王者荣耀.wmv".getBytes("utf-8"),"iso-8859-1");
//        //设置响应文件
//        headers.setContentDispositionFormData("attachment", fileName);
//        //设置响应方式
//        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//        //把文件以二进制写入
//        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers,HttpStatus.CREATED);
//        }
        
        //通过流方式下载(方式二(通用下载方式))
        if(file.exists()){
        //先读取文件
        InputStream is = new FileInputStream(file);
        //设置输出格式
//        response.reset();//去掉jsp空格行
//        //设置http头
//        response.setContentType("bin");
    
//        response.addHeader("Content-Disposition","attachment;fileName"+new String(("2016-09-05-01-回顾").getBytes("utf-8"),"iso-8859-1"));
//        HttpHeaders headers = new HttpHeaders();
//        //设置编码
//        String fileName = new String ("英雄联盟.wmv".getBytes("utf-8"),"iso-8859-1");
//        headers.setContentDispositionFormData("attachement",fileName);
//        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        //1.设置文件content类型
        response.setContentType("multipart/form-data");
        //2.设置文件头
        response.setHeader("Content-Disposition","attachment;fileName="+new String(("英雄联盟.wnv").getBytes("utf-8"),"iso-8859-1"));
        //写入
        BufferedOutputStream os = new BufferedOutputStream(response.getOutputStream());
        //开始读写
        byte[] b = new byte[2048];
        int leng = 0;
        while((leng=is.read(b))!=-1){
            os.write(b, 0, leng);
        }
        
        os.flush();
        os.close();
        is.close();
        }
        return null;
        
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值