C# 文件下载帮助类
来源:互联网 发布:老虎机算法作弊器 编辑:程序博客网 时间:2024/04/30 06:51
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 }}
0 0
- C# 文件下载帮助类
- C#文件帮助类FoderHelper
- C# 解压缩文件帮助类
- C# 文件上传帮助类
- C# 文件下载类
- 基于Android 下载文件时,更新UI简单帮助类
- 基于Android 下载文件时,更新UI简单帮助类
- 远程下载帮助类
- C# FTPClient--FTP操作帮助类,上传下载,文件,目录操作
- C#时间帮助类
- c# JsonHelper 帮助类
- C# GridView帮助类
- C# Cookie帮助类
- C# 时间帮助类
- C# js帮助类
- C# 分词帮助类
- FireBird C# 帮助类
- C# CookieHelper帮助类
- android源码树结构介绍
- 十大web前端开发框架
- 【IMWeb训练营作业】vue demo Select组件
- hdu 4143 A Simple Problem(数学)
- 一、activiti环境配置
- C# 文件下载帮助类
- JS动态
- centos系统安装openstack
- [Deep Learning] TensorFlow模型、参数的保存与读取
- C# 文件上传帮助类
- leetcode.70.Climbing Stairs
- Mysql中产生指定范围随机整型数
- KNN算法介绍(最邻近规则分类算法)
- ActivitiAPI