【发布时间】:2011-01-22 14:37:05
【问题描述】:
我有一个 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 的文件,这些文件也立即报告了 50 个ProgressPercentage。 e.BytesSent 也无济于事,因为它也立即等于 e.TotalBytesToSend。这是怎么回事?
【问题讨论】:
标签: c# .net progress-bar webclient