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
}
查看全文
相关阅读:
Free Energies: MMPBSA
蛋白添加ACE,NME
生物信息学在线软件集锦
Developing Nonstandard Parameters:MCPB.py Example
python锁定焦点到指定进程窗口的参考方法
【Windows程序设计】Unicode简介
SecureCRT连接linux终端中文显示乱码解决办法
ubuntu下音箱有声音,耳机没声音之类问题解决办法
python处理不同编码格式的文件
【Windows程序设计】第一个Windows程序
原文地址:https://www.cnblogs.com/zhangchenliang/p/981239.html
最新文章
水晶报表第一次打印慢问题的解决方法
OAuth与Pandas
daily work note
flags
工作流实施策略(转)
50个原则,做好企业管理
乔布斯残缺的完美
工作流系统
成功实施工作流管理系统
如何与新员工共度“危险蜜月”?
热门文章
浅谈项目管理的五大过程注意事项
雷军:互联网创业不要想太多 计划不能太复杂
idea插件
modbus 四字节转成float
[ Skill ] map mapc mapcan mapcar mapcon maplist mapinto
[ Skill ] print println printf fprintf sprintf lsprintf
[ Skill ] 配置菜单、工具栏自动集成,及注意事项
HTablePool的实现方法
转:java中的volatile的用法
9.1 NMR Refinement of DNA and RNA Duplexes
Copyright © 2011-2022 走看看