C#修改DownLoadHelper上传下载帮助类
来源:互联网 发布:visualbasic 知乎 编辑:程序博客网 时间:2024/05/15 23:47
/// </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 }}
本文转载 http://www.sufeinet.com/thread-2248-1-1.html
一个小福利 最近即将要上映的 爱情最美丽 电视剧 如果想看的请关注 本博客
0 0
- C#修改DownLoadHelper上传下载帮助类
- C# FTPClient--FTP操作帮助类,上传下载,文件,目录操作
- C#时间帮助类
- c# JsonHelper 帮助类
- C# GridView帮助类
- C# Cookie帮助类
- C# 时间帮助类
- C# js帮助类
- C# 分词帮助类
- FireBird C# 帮助类
- C# CookieHelper帮助类
- c# base64帮助类
- C# http帮助类
- C#实现文件上传下载工具类
- C#数据查询帮助类
- C# MySQL DBHelper帮助类
- C#文件帮助类FoderHelper
- c#数据库帮助类SqlHelper
- 工业超纯水机:edi超纯水装置的工作原理
- 网易研究院陈谔解析网易云架构
- 编辑距离
- cocos2d-x 状态机代码生成工具---SMC
- 复奶聪帜磐娜粗娜尉蕾娜派壳祭讶
- C#修改DownLoadHelper上传下载帮助类
- 系统虚拟化:原理与实现 读书笔记一: VMM 分类
- web responsive design
- 如何摧毁程序员的效率?转自伯乐在线
- 网站分析数据(即用户行为数据)的三种收集方式详解
- 【转】哪本书是对程序员最有影响、每个程序员都该阅读的书?
- Android 使用com.j256.ormlite
- JS面向对象编程学习
- 关于java中getInstance()方法