C# 实现下载功能

        /// 
        ///  Response分块下载
        /// 
        /// 客户端保存的文件名
        /// 客户端保存的文件路径(包括文件名)
        /// 
        public bool DownFile(string fileName, string filePath)
        {
            filePath = Server.MapPath("\\Content\\Files\\") + fileName; //路径(后续从webconfig读取)
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
            if (fileInfo.Exists == true)
            {
                const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
                byte[] buffer = new byte[ChunkSize];

                Response.Clear();
                System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
                long dataLengthToRead = iStream.Length;//获取下载的文件总大小
                Response.ContentType = "application/octet-stream";
                Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
                while (dataLengthToRead > 0 && Response.IsClientConnected)
                {
                    int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
                    Response.OutputStream.Write(buffer, 0, lengthRead);
                    Response.Flush();
                    dataLengthToRead = dataLengthToRead - lengthRead;
                }
                Response.Close();
                return true;
            }
            else
                return false;
        }

 

你可能感兴趣的:(C# 实现下载功能)