Asp.net(c#)实现多线程断点续传

简介:
System.IO.Stream iStream = null; 

// Buffer to read 10K bytes in chunk: 
byte[] buffer = new Byte[10240]; 

// Length of the file: 
int length; 

// Total bytes to read: 
long dataToRead; 

// Identify the file to download including its path. 
string filepath = @”E:\software\SQL Server 2000 Personal Edition.ISO”; 

// Identify the file name. 
string filename = System.IO.Path.GetFileName(filepath); 

try 
{ 
// Open the file. 
iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open, 
System.IO.FileAccess.Read,System.IO.FileShare.Read); 
Response.Clear(); 

// Total bytes to read: 
dataToRead = iStream.Length; 

long p = 0; 
if(Request.Headers["Range"]!=null) 
{ 
Response.StatusCode = 206; 
p = long.Parse( Request.Headers["Range"].Replace(”bytes=”,”").Replace(”-”,”")); 
} 
if(p != 0) 
{ 
Response.AddHeader(”Content-Range”,”bytes ” + p.ToString() + “-” + ((long)(dataToRead - 1)).ToString() + “/” + dataToRead.ToString()); 
} 
Response.AddHeader(”Content-Length”,((long)(dataToRead-p)).ToString()); 
Response.ContentType = “application/octet-stream”; 
Response.AddHeader(”Content-Disposition”, “attachment; filename=” + System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(filename))); 

iStream.Position = p; 
dataToRead = dataToRead - p; 
// Read the bytes. 
while (dataToRead > 0) 
{ 
// Verify that the client is connected. 
if (Response.IsClientConnected) 
{ 
// Read the data in buffer. 
length = iStream.Read(buffer, 0, 10240); 

// Write the data to the current output stream. 
Response.OutputStream.Write(buffer, 0, length); 

// Flush the data to the HTML output. 
Response.Flush(); 

buffer= new Byte[10240]; 
dataToRead = dataToRead - length; 
} 
else 
{ 
//prevent infinite loop if user disconnects 
dataToRead = -1; 
} 
} 
} 
catch (Exception ex) 
{ 
// Trap the error, if any. 
Response.Write(”Error : ” + ex.Message); 
} 
finally 
{ 
if (iStream != null) 
{ 
//Close the file. 
iStream.Close(); 
} 
Response.End(); 

}

本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1081571


相关文章
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
901 0
|
机器学习/深度学习 监控 算法
局域网行为监控软件 C# 多线程数据包捕获算法:基于 KMP 模式匹配的内容分析优化方案探索
本文探讨了一种结合KMP算法的多线程数据包捕获与分析方案,用于局域网行为监控。通过C#实现,该系统可高效检测敏感内容、管理URL访问、分析协议及审计日志。实验表明,相较于传统算法,KMP在处理大规模网络流量时效率显著提升。未来可在算法优化、多模式匹配及机器学习等领域进一步研究。
407 0
|
开发框架 搜索推荐 算法
一个包含了 50+ C#/.NET编程技巧实战练习教程
一个包含了 50+ C#/.NET编程技巧实战练习教程
749 18
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
886 12
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
770 0
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
390 6
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
394 6
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
458 6
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
1255 13
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
1304 5