Skip to content

Commit 71546ce

Browse files
committed
update the progress handler
1 parent 128993e commit 71546ce

File tree

4 files changed

+54
-32
lines changed

4 files changed

+54
-32
lines changed

src/Qiniu/Qiniu.csproj

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,10 @@
6464
</PropertyGroup>
6565
<ItemGroup>
6666
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
67-
<SpecificVersion>False</SpecificVersion>
68-
<HintPath>..\..\bin\Newtonsoft.Json.dll</HintPath>
67+
<HintPath>..\packages\Newtonsoft.Json.10.0.3\lib\net40\Newtonsoft.Json.dll</HintPath>
68+
</Reference>
69+
<Reference Include="nunit.framework, Version=3.7.1.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
70+
<HintPath>..\packages\NUnit.3.7.1\lib\net40\nunit.framework.dll</HintPath>
6971
</Reference>
7072
<Reference Include="System" />
7173
<Reference Include="System.Core" />

src/Qiniu/Storage/FormUploader.cs

Lines changed: 46 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,22 @@ public HttpResult UploadData(byte[] data, string key, string token, PutExtra ext
7676
/// <param name="token">上传凭证</param>
7777
/// <param name="extra">上传可选设置</param>
7878
/// <returns>上传数据流后的返回结果</returns>
79-
public HttpResult UploadStream(Stream stream, string key, string token, PutExtra extra)
79+
public HttpResult UploadStream(Stream stream, string key, string token, PutExtra putExtra)
8080
{
81-
if (extra == null)
81+
if (putExtra == null)
8282
{
83-
extra = new PutExtra();
83+
putExtra = new PutExtra();
8484
}
85-
if (string.IsNullOrEmpty(extra.MimeType )) {
86-
extra.MimeType = "application/octet-stream";
85+
if (string.IsNullOrEmpty(putExtra.MimeType )) {
86+
putExtra.MimeType = "application/octet-stream";
87+
}
88+
if (putExtra.ProgressHandler == null)
89+
{
90+
putExtra.ProgressHandler = DefaultUploadProgressHandler;
91+
}
92+
if (putExtra.UploadController == null)
93+
{
94+
putExtra.UploadController = DefaultUploadController;
8795
}
8896
string fname = key;
8997
if (string.IsNullOrEmpty(key))
@@ -115,9 +123,9 @@ public HttpResult UploadStream(Stream stream, string key, string token, PutExtra
115123
bodyBuilder.AppendLine("--" + boundary);
116124

117125
//write extra params
118-
if (extra.Params != null && extra.Params.Count > 0)
126+
if (putExtra.Params != null && putExtra.Params.Count > 0)
119127
{
120-
foreach (var p in extra.Params)
128+
foreach (var p in putExtra.Params)
121129
{
122130
if (p.Key.StartsWith("x:"))
123131
{
@@ -134,6 +142,7 @@ public HttpResult UploadStream(Stream stream, string key, string token, PutExtra
134142
int bufferSize = 1024 * 1024;
135143
byte[] buffer = new byte[bufferSize];
136144
int bytesRead = 0;
145+
putExtra.ProgressHandler(0, stream.Length);
137146
MemoryStream dataMS = new MemoryStream();
138147
while ((bytesRead = stream.Read(buffer, 0, bufferSize)) != 0)
139148
{
@@ -149,11 +158,11 @@ public HttpResult UploadStream(Stream stream, string key, string token, PutExtra
149158
bodyBuilder.AppendLine("--" + boundary);
150159

151160
//write fname
152-
bodyBuilder.AppendFormat("Content-Disposition: form-data; name=\"file\"; filename=\"{0}\"",fname);
161+
bodyBuilder.AppendFormat("Content-Disposition: form-data; name=\"file\"; filename=\"{0}\"", fname);
153162
bodyBuilder.AppendLine();
154163

155164
//write mime type
156-
bodyBuilder.AppendFormat("Content-Type: {0}", extra.MimeType);
165+
bodyBuilder.AppendFormat("Content-Type: {0}", putExtra.MimeType);
157166
bodyBuilder.AppendLine();
158167
bodyBuilder.AppendLine();
159168

@@ -180,8 +189,9 @@ public HttpResult UploadStream(Stream stream, string key, string token, PutExtra
180189
}
181190

182191
string uploadHost = this.config.UpHost(ak, bucket);
183-
192+
putExtra.ProgressHandler(stream.Length / 5, stream.Length);
184193
result = httpManager.PostMultipart(uploadHost, ms.ToArray(), boundary, null);
194+
putExtra.ProgressHandler(stream.Length, stream.Length);
185195
if (result.Code == (int)HttpCode.OK)
186196
{
187197
result.RefText += string.Format("[{0}] [FormUpload] Uploaded: #STREAM# ==> \"{1}\"\n",
@@ -238,6 +248,32 @@ public HttpResult UploadStream(Stream stream, string key, string token, PutExtra
238248

239249
return result;
240250
}
251+
252+
/// <summary>
253+
/// 默认的进度处理函数-上传文件
254+
/// </summary>
255+
/// <param name="uploadedBytes">已上传的字节数</param>
256+
/// <param name="totalBytes">文件总字节数</param>
257+
public static void DefaultUploadProgressHandler(long uploadedBytes, long totalBytes)
258+
{
259+
if (uploadedBytes < totalBytes)
260+
{
261+
Console.WriteLine("[{0}] [FormUpload] Progress: {1,7:0.000}%", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff"), 100.0 * uploadedBytes / totalBytes);
262+
}
263+
else
264+
{
265+
Console.WriteLine("[{0}] [FormUpload] Progress: {1,7:0.000}%\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff"), 100.0);
266+
}
267+
}
268+
269+
/// <summary>
270+
/// 默认的上传控制函数,默认不执行任何控制
271+
/// </summary>
272+
/// <returns>控制状态</returns>
273+
public static UploadControllerAction DefaultUploadController()
274+
{
275+
return UploadControllerAction.Activated;
276+
}
241277
}
242278

243279
}

src/Qiniu/Storage/ResumableUploader.cs

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,14 @@ public ResumableUploader(Config config)
5353
/// <param name="localFile">本地待上传的文件名</param>
5454
/// <param name="key">要保存的文件名称</param>
5555
/// <param name="token">上传凭证</param>
56-
/// <param name="extra">上传可选配置</param>
56+
/// <param name="putExtra">上传可选配置</param>
5757
/// <returns>上传文件后的返回结果</returns>
58-
public HttpResult UploadFile(string localFile, string key, string token, PutExtra extra)
58+
public HttpResult UploadFile(string localFile, string key, string token, PutExtra putExtra)
5959
{
6060
try
6161
{
6262
FileStream fs = new FileStream(localFile, FileMode.Open);
63-
return this.UploadStream(fs, key, token, extra);
63+
return this.UploadStream(fs, key, token, putExtra);
6464
}
6565
catch (Exception ex)
6666
{
@@ -684,23 +684,6 @@ public static void DefaultUploadProgressHandler(long uploadedBytes, long totalBy
684684
Console.WriteLine("[{0}] [ResumableUpload] Progress: {1,7:0.000}%\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff"), 100.0);
685685
}
686686
}
687-
688-
/// <summary>
689-
/// 默认的进度处理函数-上传数据流
690-
/// </summary>
691-
/// <param name="uploadedBytes">已上传的字节数,如果设置为0或负数表示读取完毕</param>
692-
public static void DefaultStreamProgressHandler(long uploadedBytes)
693-
{
694-
if (uploadedBytes > 0)
695-
{
696-
Console.WriteLine("[{0}] [ResumableUpload] UploadledBytes: {1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff"), uploadedBytes);
697-
}
698-
else
699-
{
700-
Console.WriteLine("[{0}] [ResumableUpload] Done.\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ffff"));
701-
}
702-
}
703-
704687

705688
/// <summary>
706689
/// 默认的上传控制函数,默认不执行任何控制

src/Qiniu/packages.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
33
<package id="Newtonsoft.Json" version="10.0.3" targetFramework="net40" />
4+
<package id="NUnit" version="3.7.1" targetFramework="net40" />
45
</packages>

0 commit comments

Comments
 (0)