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
}
查看全文
相关阅读:
Zepto
html5新增表单控件和表单属性
初识html5
H5 css3布局
H5 css3背景透明度
H5 css3特效
H5 css3渐变
H5css3的文本属性
一个类有两个类别中,在类别里实现了相同的方法结果?
size_t 理解误区
原文地址:https://www.cnblogs.com/zhangchenliang/p/981239.html
最新文章
输入任意一个5位数,判断其是否是回文数。
如何在页面上同时使用 jQuery 和其他框架?
SessionStateMode之SQL Server共享session
console.log在IE浏览器中会有异常
eq
toggle,hasClass
jQuery属性attr
(function(){})()
SQL事务用法begin tran,commit tran和rollback tran的用法
关于调用接口时出现417错误
热门文章
加密算法学习
批量执行插入操作-帮同事做
小程序学习
Spring的学习和源码的学习
一个天气的微服务springcloud
关于支付
SpringBoot企业级博客开发
淘淘商城练习
svg 矢量图
Canvas画布 位图
Copyright © 2011-2022 走看看