C#下载大文件并实现断点续传
2007-07-21 11:16
691 查看
转自
http://5543541.qzone.qq.com/blog/23
System.IO.Stream iStream = null;
byte[] buffer = new Byte[10240];
int length;
long dataToRead;
string filepath = "文件存放地址";
string filename = System.IO.Path.GetFileName(filepath);
iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open, System.IO.FileAccess.Read,System.IO.FileShare.Read);
Response.Clear();
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("真实文件名"));
iStream.Position = p;
dataToRead = dataToRead - p;
while (dataToRead > 0)
{
if (Response.IsClientConnected)
{
length = iStream.Read(buffer, 0, 10240);
Response.OutputStream.Write(buffer, 0, length);
Response.Flush();
buffer= new Byte[10240];
dataToRead = dataToRead - length;
}
else
{
dataToRead = -1;
}
}
iStream.Close();
Response.End();
http://5543541.qzone.qq.com/blog/23
System.IO.Stream iStream = null;
byte[] buffer = new Byte[10240];
int length;
long dataToRead;
string filepath = "文件存放地址";
string filename = System.IO.Path.GetFileName(filepath);
iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open, System.IO.FileAccess.Read,System.IO.FileShare.Read);
Response.Clear();
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("真实文件名"));
iStream.Position = p;
dataToRead = dataToRead - p;
while (dataToRead > 0)
{
if (Response.IsClientConnected)
{
length = iStream.Read(buffer, 0, 10240);
Response.OutputStream.Write(buffer, 0, length);
Response.Flush();
buffer= new Byte[10240];
dataToRead = dataToRead - length;
}
else
{
dataToRead = -1;
}
}
iStream.Close();
Response.End();
相关文章推荐
- C# 文件下载之断点续传实现代码
- 以多线程、断点续传方式下载文件的实现
- php实现的支持断点续传的文件下载类
- PHP实现文件下载断点续传详解
- C# 断点续传 上传、下载文件处理
- 关于Qt使用QNetworkAccessManager下载文件(实现断点续传功能)
- Android实现文件下载断点续传
- C# 文件下载之断点续传
- C# 文件下载断点续传
- 文件下载之断点续传(客户端与服务端的实现)
- 【转】文件下载之断点续传(客户端与服务端的实现)
- PHP实现文件下载断点续传
- 主题:以多线程、断点续传方式下载文件的实现
- 使用libcurl实现获取目标文件大小, 下载进度显示, 断点续传等功能
- PHP实现文件下载断点续传详解
- 文件下载之断点续传(客户端与服务端的实现)
- 【SFTP】使用Jsch实现Sftp文件下载-支持断点续传和进程监控
- 嵌入式 FTP断点续传原理以及实现指定下载文件起始地址
- C#实现上传文件分割,断点续传上传文件
- 【转】文件下载之断点续传(客户端与服务端的实现)