我正在開發從給定URL下載視頻的應用程序。問題是我沒有收到整個文件內容,然後無法播放該文件。例如,試圖下載大小爲〜2.23 MB的視頻,僅給出我〜2.11 MB的視頻。當我在瀏覽器中使用URL時,會顯示一個對話框來保存視頻,並且文件已成功下載。未完全下載文件
我試過使用WebClient
類,它的工作原理,但我想下載文件塊,以便能夠報告狀態(完成百分比)。下面是我使用的代碼:
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
int bufferSize = 1024 * 300;
string filePath = saveFileDialog.FileName;
if (File.Exists(filePath))
File.Delete(filePath);
int totalBytes = 0;
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(DownloadUrl);
long contentLength = webRequest.GetResponse().ContentLength;
using (Stream webStream = webRequest.GetResponse().GetResponseStream())
using (StreamReader reader = new StreamReader(webStream))
using (BinaryWriter fileWriter = new BinaryWriter(File.Create(filePath)))
{
do
{
char[] buffer = new char[bufferSize];
bytesRead = reader.ReadBlock(buffer, 0, bufferSize); // also tried with Read(buffer, 0, bufferSize);
totalBytes += bytesRead;
Console.WriteLine("Bytes read: " + bytesRead + " Total Bytes: " + totalBytes + " Content length: " + contentLength);
if (bytesRead > 0)
fileWriter.Write(buffer, 0, bytesRead);
} while (!reader.EndOfStream);
}
}
我也試圖讀取直到bytesRead = 0
,但它是同樣的結果。 有什麼,我失蹤?
嘗試在你的作家上調用'.Flush()'。 – MAV
@MAV問題不在寫文件,而是在接收它。接收的字節數小於預期的字節數。 – niculare