我有一个WebClient,用于按以下方式上传文件,base64Encoded是一个编码为base64字符串的图片,因为这是imgur服务器所期望的:
public Upload()
{
WebClient webClient = new WebClient();
webClient.UploadProgressChanged += new UploadProgressChangedEventHandler(webClient_UploadProgressChanged);
webClient.UploadValuesCompleted += new UploadValuesCompletedEventHandler(webClient_UploadValuesCompleted);
NameValueCollection values = new NameValueCollection();
values.Add("key", "imgur api key");
values.Add("image", base64Encoded);
webClient.UploadValuesAsync(new Uri("http://api.imgur.com/2/upload"), "POST", values);
}
这是UploadProgressChanged:
的事件处理程序 private void webClient_UploadProgressChanged(object sender, UploadProgressChangedEventArgs e)
{
int percentage = e.ProgressPercentage * 2;
progressBar.Value = percentage;
percentageTextBlock.Text = (percentage).ToString() + "%";
}
现在我的问题是事件处理程序仅在开始时调用一次,报告ProgressPercentage
为50,然后不再被调用。文件上传成功,但我的进度条无效。这不是因为我上传了一个小文件,因为我还尝试了几个mb的文件,它也会立即报告ProgressPercentage
的50个文件。 e.BytesSent
也没有任何帮助,因为它也会立即等于e.TotalBytesToSend
。这是怎么回事?