我正在使用我從博客獲得的代碼塊,使用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
。
- 如何實施進度系統?
- 異步和正常傳輸有什麼區別?
UploadValuesAsync返回void,而UploadValues返回一個字節數組,有什麼建議? – user2896358
您可能需要在UploadValuesCompleated事件處理程序中的'UploadValuesAsync'調用之後移動代碼,並從'e.Result'中讀取結果。我一回家就會更新我的答案。 – Kimmax
好吧,我現在更新了我的代碼,仍未測試。讓我知道如果這項工程 – Kimmax