0
我正在將一些表單數據(包括文件)上傳到Web服務器,並需要跟蹤上傳進度。我通過將我的上傳數據逐位複製到HttpWebRequest
的請求流並根據複製的字節數和字節總數更新進度欄來完成。根據另一個網站,這將緩衝一切,而實際的網絡傳輸需要更長的時間。我應該設置request.AllowWriteStreamBuffering = false;
以防止緩衝。 Unfortunatley,當我這樣做時,request.GetResponse()
方法永遠阻止。HTTP上傳進度
下面是一些示例代碼:
HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create(uri);
request.AllowAutoRedirect = false;
request.Method = "POST";
request.ContentType = "multipart/form-data; boundary=" + multipartBoundary;
Stream reqStream = request.GetRequestStream();
request.AllowWriteStreamBuffering = false;
postStream.Seek(0, SeekOrigin.Begin);
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = postStream.Read(buffer, 0, buffer.Length)) > 0)
{
reqStream.Write(buffer, 0, bytesRead);
int percentage = (int) (postStream.Position * 100/postStream.Length);
backgroundWorker.ReportProgress(percentage);
}
reqStream.Close();
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
當我不設置AllowWriteStreamBuffering
這一切工作正常。這裏有什麼問題?