zoukankan
html css js c++ java
Asp.net(c#)实现多线程断点续传
Code
1
System.IO.Stream iStream
=
null
;
2
3
//
Buffer to read 10K bytes in chunk:
4
byte
[] buffer
=
new
Byte[
10240
];
5
6
//
Length of the file:
7
int
length;
8
9
//
Total bytes to read:
10
long
dataToRead;
11
12
//
Identify the file to download including its path.
13
string
filepath
=
@"
E:\software\SQL Server 2000 Personal Edition.ISO
"
;
14
15
//
Identify the file name.
16
string
filename
=
System.IO.Path.GetFileName(filepath);
17
18
try
19
{
20
//
Open the file.
21
iStream
=
new
System.IO.FileStream(filepath, System.IO.FileMode.Open,
22
System.IO.FileAccess.Read,System.IO.FileShare.Read);
23
Response.Clear();
24
25
//
Total bytes to read:
26
dataToRead
=
iStream.Length;
27
28
long
p
=
0
;
29
if
(Request.Headers[
"
Range
"
]
!=
null
)
30
{
31
Response.StatusCode
=
206
;
32
p
=
long
.Parse( Request.Headers[
"
Range
"
].Replace(
"
bytes=
"
,
""
).Replace(
"
-
"
,
""
));
33
}
34
if
(p
!=
0
)
35
{
36
Response.AddHeader(
"
Content-Range
"
,
"
bytes
"
+
p.ToString()
+
"
-
"
+
((
long
)(dataToRead
-
1
)).ToString()
+
"
/
"
+
dataToRead.ToString());
37
}
38
Response.AddHeader(
"
Content-Length
"
,((
long
)(dataToRead
-
p)).ToString());
39
Response.ContentType
=
"
application/octet-stream
"
;
40
Response.AddHeader(
"
Content-Disposition
"
,
"
attachment; filename=
"
+
System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(filename)));
41
42
iStream.Position
=
p;
43
dataToRead
=
dataToRead
-
p;
44
//
Read the bytes.
45
while
(dataToRead
>
0
)
46
{
47
//
Verify that the client is connected.
48
if
(Response.IsClientConnected)
49
{
50
//
Read the data in buffer.
51
length
=
iStream.Read(buffer,
0
,
10240
);
52
53
//
Write the data to the current output stream.
54
Response.OutputStream.Write(buffer,
0
, length);
55
56
//
Flush the data to the HTML output.
57
Response.Flush();
58
59
buffer
=
new
Byte[
10240
];
60
dataToRead
=
dataToRead
-
length;
61
}
62
else
63
{
64
//
prevent infinite loop if user disconnects
65
dataToRead
=
-
1
;
66
}
67
}
68
}
69
catch
(Exception ex)
70
{
71
//
Trap the error, if any.
72
Response.Write(
"
Error :
"
+
ex.Message);
73
}
74
finally
75
{
76
if
(iStream
!=
null
)
77
{
78
//
Close the file.
79
iStream.Close();
80
}
81
Response.End();
82
}
查看全文
相关阅读:
补发《超级迷宫》站立会议九
补发《超级迷宫》站立会议八
补发《超级迷宫》站立会议七
补发《超级迷宫》站立会议六
一周开发项目
所学的内容
开发项目和所用时间 感想
自我介绍
大容量数据转移操作命令——BULK INSERT(类似于BCP)
字符编码与文件处理
原文地址:https://www.cnblogs.com/zhangchenliang/p/981239.html
最新文章
Spring中的AOP注解方式和XML方式
Spring中JDBCTemplate的入门
Spring中事务的XML方式[声明方式]
如何学好框架?
《浪潮之巅》读后感
《算法导论》读后感2
《算法导论》读后感
读《编程之美》读后感3
读《编程之美》读后感2
读《编程之美》读后感
热门文章
对搜狗输入法的评价
计算1的数量
站立会议 第五天
站立会议 第六天
《测试驱动开发》阅读笔记三
《测试驱动开发》阅读笔记二
《测试驱动开发》阅读笔记一
补发《超级迷宫》第二阶段站立会议
课程改进意见
补发《超级迷宫》站立会议十
Copyright © 2011-2022 走看看