我正在使用HttpWebRequest将图像从Windows Phone 7应用程序上传到WebDAV服务器。上传没有问题,一切正常。 现在我想为文件上传添加进度条。 我正在使用此代码将数据写入流:
protected void WriteRequestStream(IAsyncResult result)
{
Stream stream = (Stream)result.AsyncState;
Stream streamResponse = httpWebRequest.EndGetRequestStream(result);
byte[] content = new byte[4096];
long totalBytesRead = 0;
int bytesRead = 0;
do
{
bytesRead = stream.Read(content, 0, content.Length);
totalBytesRead += bytesRead;
streamResponse.Write(content, 0, bytesRead);
streamResponse.Flush();
if (progressCallback != null)
{
float value = (float)totalBytesRead / stream.Length * 100;
progressCallback(value);
}
} while (bytesRead > 0);
streamResponse.Close();
httpWebRequest.BeginGetResponse(new AsyncCallback(requestCallback), null);
}
我在streamResponse对象中写入的数据似乎在发送到WebDAV服务器之前被缓冲。在上传完成之前,progessbar就是快速且100%。
我注意到HttpWebRequest类中没有AllowWriteStreamBuffering属性。有什么解决方案可以在WP7中使用HttpWebRequest上传文件并显示上传进度吗?
谢谢!