[上传下载] C#修改DownLoadHelper上传下载帮助类 (转载)
2014-03-31 11:52
609 查看
点击下载 DownLoadHelper.rar
主要功能如下
主要功能如下
/// <summary> /// 输出硬盘文件,提供下载 支持大文件、续传、速度限制、资源占用小 /// </summary> /// <param name="_Request">Page.Request对象</param> /// <param name="_Response">Page.Response对象</param> /// <param name="_fileName">下载文件名</param> /// <param name="_fullPath">带文件名下载路径</param> /// <param name="_speed">每秒允许下载的字节数</param> /// <returns>返回是否成功</returns>
/// <summary> /// 编 码 人:苏飞 /// 联系方式:361983679 /// 更新网站:http://www.sufeinet.com/thread-655-1-1.html /// </summary> using System; using System.IO; using System.Web; using System.Threading; namespace DotNet.Utilities { /// <summary> /// 文件下载帮助类 /// </summary> public class DownLoadHelper { #region ResponseFile 输出硬盘文件,提供下载 支持大文件、续传、速度限制、资源占用小 /// <summary> /// 输出硬盘文件,提供下载 支持大文件、续传、速度限制、资源占用小 /// </summary> /// <param name="_Request">Page.Request对象</param> /// <param name="_Response">Page.Response对象</param> /// <param name="_fileName">下载文件名</param> /// <param name="_fullPath">带文件名下载路径</param> /// <param name="_speed">每秒允许下载的字节数</param> /// <returns>返回是否成功</returns> public static bool ResponseFile(HttpRequest _Request, HttpResponse _Response, string _fileName, string _fullPath, long _speed) { try { FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); BinaryReader br = new BinaryReader(myFile); try { _Response.AddHeader("Accept-Ranges", "bytes"); _Response.Buffer = false; long fileLength = myFile.Length; long startBytes = 0; int pack = 10240; //10K bytes //int sleep = 200; //每秒5次 即5*10K bytes每秒 int sleep = (int)Math.Floor((double)(1000 * pack / _speed)) + 1; if (_Request.Headers["Range"] != null) { _Response.StatusCode = 206; string[] range = _Request.Headers["Range"].Split(new char[] { '=', '-' }); startBytes = Convert.ToInt64(range[1]); } _Response.AddHeader("Content-Length", (fileLength - startBytes).ToString()); if (startBytes != 0) { _Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength - 1, fileLength)); } _Response.AddHeader("Connection", "Keep-Alive"); _Response.ContentType = "application/octet-stream"; _Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(_fileName, System.Text.Encoding.UTF8)); br.BaseStream.Seek(startBytes, SeekOrigin.Begin); int maxCount = (int)Math.Floor((double)((fileLength - startBytes) / pack)) + 1; for (int i = 0; i < maxCount; i++) { if (_Response.IsClientConnected) { _Response.BinaryWrite(br.ReadBytes(pack)); Thread.Sleep(sleep); } else { i = maxCount; } } } catch { return false; } finally { br.Close(); myFile.Close(); } } catch { return false; } return true; } #endregion } }
相关文章推荐
- C#修改DownLoadHelper上传下载帮助类
- [GDI+] C# ImageClass帮助类教程与源码下载 (转载)
- [GDI+] C# ImageDown帮助类教程与源码下载 (转载)
- 2003解决IIS限制上传、下载文件大小及metabase.xml修改(转载)
- [上传下载] C# ImageUpload图片上传类教程与源码下载 (转载)
- WEB服务 修改IIS大文件“上传”“下载”文件大小限制(转载:http://hi.baidu.com/163kexu/blog/item/c756f9d9850892ee39012fde.html)
- c#上传下载ftp(支持断点续传) (转载)
- C#文件上传和下载--转载
- [配置文件] C#修改App.config,Web.config文件帮助类,ConfigHelper (转载)
- [日历] C#修改CNDate日历帮助类 (转载)
- [上传下载] C#FileDown文件下载类 (转载)
- [上传下载] C# UpLoadFiles文件上传类 (转载)
- [上传下载] C#FileUp文件上传类 (转载)
- C#上传(修改表单数据),下载文件到服务器
- C#FTP操作类含下载上传删除获取目录文件及子目录列表等等
- C#实现http协议支持上传下载文件的GET、POST请求
- WEB服务 修改IIS大文件“上传”“下载”文件大小限制
- C#实现附件上传和下载功能
- c#上传下载ftp(支持断点续传)
- 上传图片并修改其大小(转载)