@@ -11,6 +11,7 @@ qiniu-csharp-sdk
11
11
- [ 上传文件] ( #upload )
12
12
- [上传事件](#event)
13
13
- [上传结果](#result)
14
+ - [续传](#resumble)
14
15
- [ 文件操作] ( #rsop )
15
16
- [查看信息](#stat)
16
17
- [删除](#delete)
@@ -52,12 +53,16 @@ UploadProgressChanged; | 上传进度
52
53
UploadBlockCompleted; | 上传块完成
53
54
UploadBlockFailed; | 上传块失败
54
55
55
- 前三个事件比较容易理解,后两个事件是根据七牛的大文件上传机制衍生出来的,合理利用这两个事件可以完成大文件分块上传结果持久化。
56
+ 前三个事件比较容易理解,后两个事件是根据七牛的大文件上传机制衍生出来的,合理利用这两个事件可以完成大文件分块上传结果持久化,从而实现续传 。
56
57
57
58
<a id =" result " ></a >
58
59
## 上传结果
59
60
成功上传一个文件后,结果通过事件` uploadCompleted ` 获取得到,包括文件的` Hash ` 和` Key ` 以及从七牛云存储返回的原始字符串(主要考虑到上传凭证中指定了自定义的returnBody)。
60
61
62
+ ## 续传
63
+
64
+ 类` QiniuResumbleUploadEx ` 可用于续传,见示例。
65
+
61
66
<a id =" rsop " ></a >
62
67
## 文件操作
63
68
简单的实现了文件的基本信息获取及删除操作,分别为` Stat ` 和` Delete `
@@ -66,6 +71,8 @@ UploadBlockFailed; | 上传块失败
66
71
67
72
``` c#
68
73
using System ;
74
+ using System .Collections ;
75
+ using System .Collections .Generic ;
69
76
using qiniu ;
70
77
using System .Threading ;
71
78
@@ -77,47 +84,67 @@ namespace demo
77
84
{
78
85
// 初始化qiniu配置,主要是API Keys
79
86
qiniu .Config .ACCESS_KEY = " IT9iP3J9wdXXYsT1p8ns0gWD-CQOdLvIQuyE0FOi" ;
80
- qiniu .Config .SECRET_KEY = " zUCzekBtEqTZ4-WJPCGlBrr2PeyYxsYn98LxaivM " ;
87
+ qiniu .Config .SECRET_KEY = " zUCzekBtEqTZ4-WJPCGlBrr2PeyYxsYn98LPaivM " ;
81
88
82
89
/** ********************************************************************
83
90
可以用下面的方法从配置文件中初始化
84
91
qiniu.Config.InitFromAppConfig ();
85
92
**********************************************************************/
86
93
87
- // ==========================上传文件=========================================
94
+ string localfile = " /Users/icattlecoder/Movies/tzd.rmvb" ;
95
+ string bucket = " icattlecoder" ;
96
+ string qiniukey = " tzd.rmvb" ;
97
+
98
+ // ======================================================================
88
99
{
89
- QiniuFile qfile = new QiniuFile (" <input your bucket name>" , " <input qiniu file key>" , " <local disk file path" );
100
+ QiniuFile qfile = new QiniuFile (bucket , qiniukey , localfile );
101
+
102
+ ResumbleUploadEx puttedCtx = new ResumbleUploadEx (localfile ); // 续传
103
+
90
104
ManualResetEvent done = new ManualResetEvent (false );
91
- // 上传完成事件
92
105
qfile .UploadCompleted += (sender , e ) => {
93
- Console .WriteLine (e .RawString );
106
+ Console .WriteLine (e .key );
107
+ Console .WriteLine (e .Hash );
94
108
done .Set ();
95
109
};
96
- // 上传失败事件
97
110
qfile .UploadFailed += (sender , e ) => {
98
111
Console .WriteLine (e .Error .ToString ());
112
+ puttedCtx .Save ();
99
113
done .Set ();
100
114
};
101
- // 上传进度事件,可用于百分比进度显示,网速计算
102
115
qfile .UploadProgressChanged += (sender , e ) => {
103
116
int percentage = (int )(100 * e .BytesSent / e .TotalBytes );
104
117
Console .Write (percentage );
105
118
};
106
- // 上传为异步操作
107
- // 上传本地文件到七牛云存储
119
+ qfile .UploadBlockCompleted += (sender , e ) => {
120
+ // 上传结果持久化
121
+ puttedCtx .Add (e .Index ,e .Ctx );
122
+ puttedCtx .Save ();
123
+ };
124
+ qfile .UploadBlockFailed += (sender , e ) => {
125
+ //
126
+ };
127
+
128
+ // 上传为异步操作
129
+ // 上传本地文件到七牛云存储
108
130
qfile .Upload ();
131
+
132
+ // 如果要续传,调用下面的方法
133
+ // qfile.Upload (puttedCtx.PuttedCtx);
134
+
109
135
done .WaitOne ();
110
136
}
111
137
112
138
// ======================================================================
113
139
{
114
140
115
141
try {
116
- QiniuFile qfile = new QiniuFile (" <input your bucket Name> " , " <input qiniu file key> " );
142
+ QiniuFile qfile = new QiniuFile (bucket , qiniukey );
117
143
QiniuFileInfo finfo = qfile .Stat ();
118
144
if (finfo != null ) {
145
+ qfile .Move (" cloudcomment" ," movetest" );
119
146
// 删除七牛云空间的文件
120
- qfile .Delete ();
147
+ // qfile.Delete ();
121
148
}
122
149
} catch (QiniuWebException e ) {
123
150
Console .WriteLine (e .Error .HttpCode );
@@ -127,6 +154,7 @@ namespace demo
127
154
}
128
155
}
129
156
}
157
+
130
158
```
131
159
132
160
<a id =" issue " ></a >
0 commit comments