【发布时间】:2014-05-02 13:45:16
【问题描述】:
我正在使用从博客中获得的一段代码,使用 API v3 将图像上传到 IMGur。
它工作正常,但我想实现一个进度条系统,让用户知道已经上传了多少,如果程序处理高分辨率图像。
到目前为止,我还不能这样做。
我不是一个经验丰富的程序员,只是将其作为一个学习项目。
代码:
public object UploadImage(string image)
{
WebClient w = new WebClient();
w.UploadProgressChanged += (s, e) => { };
w.UploadValuesCompleted += (s, e) => { };
w.Headers.Add("Authorization", "Client-ID " + ClientId);
System.Collections.Specialized.NameValueCollection Keys = new System.Collections.Specialized.NameValueCollection();
try
{
Keys.Add("image", Convert.ToBase64String(File.ReadAllBytes(image)));
byte[] responseArray = w.UploadValues("https://api.imgur.com/3/image", Keys);
dynamic result = Encoding.ASCII.GetString(responseArray); System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("link\":\"(.*?)\"");
System.Text.RegularExpressions.Match match = reg.Match(result);
string url = match.ToString().Replace("link\":\"", "").Replace("\"", "").Replace("\\/", "/");
textBox1.Text = url;
return url;
}
catch (Exception s)
{
MessageBox.Show("Something went wrong. " + s.Message);
return "Failed!";
}
}
起初我尝试使用事件UploadProgressChanged 和UploadValuesCompleted,但它们没有被触发,我的理论是当调用UploadValuesAsync 而不是UploadValues 时它们被触发。
- 如何实施进度系统?
- 异步传输和普通传输有什么区别?
【问题讨论】:
标签: c# .net asynchronous webclient imgur