//TransmitFile

  public void FileDownload5()
        { 
            //前面可以做用户登录验证、用户权限验证等。
            string filename = "大数据.rar";   //客户端保存的文件名 
            string filePath = Server.MapPath("/App_Data/大数据.rar");//要被下载的文件路径
            var range = Request.Headers["Range"];
            if (!string.IsNullOrWhiteSpace(range))//如果遵守协议,支持断点续传
            {
                var fileLength = new FileInfo(filePath).Length;//文件的总大小
                long begin;//文件的开始位置
                long end;//文件的结束位置
                long.TryParse(range.Split('=')[1].Split('-')[0], out begin);
                long.TryParse(range.Split('-')[1], out end);
                end = end - begin > 0 ? end : (fileLength - 1);
                //表头 表明  下载文件的开始、结束位置 和文件总大小
                Response.AddHeader("Content-Range", "bytes " + begin + "-" + end + "/" + fileLength);
                Response.ContentType = "application/octet-stream";
                Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
                Response.TransmitFile(filePath, begin, (end - begin));//发送 文件开始位置读取的大小
            }
            else
            {
                Response.ContentType = "application/octet-stream";
                Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
                Response.TransmitFile(filePath);
            }
        }
posted @ 2018-08-07 20:51  Caryon  阅读(102)  评论(0编辑  收藏  举报