HttpWebRequest下载文件问题,如何保存成为二进制文件?
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
// Sends the HttpWebRequest and waits for the response.
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
// Gets the stream associated with the response.
Stream receiveStream = myHttpWebResponse.GetResponseStream();
byte[] buffer = new byte[1024];
int numBytesToRead = (int)myHttpWebResponse.ContentLength;
int numBytesRead = 0;
FileStream fs = new FileStream(System.Environment.CurrentDirectory + "\\"+url.Substring(url.LastIndexOf("/"), url.Length - url.LastIndexOf("/")), FileMode.Create);
while (numBytesToRead > 0)
{
// Read may return anything from 0 to numBytesToRead.
int n = receiveStream.Read(buffer, numBytesRead, 1024);
// The end of the file is reached.
if (n == 0)
break;
fs.Write(buffer, numBytesRead, buffer.Length);
numBytesRead += n;
numBytesToRead -= n;
}
fs.Flush();
fs.Close();
fs.Dispose();
receiveStream.Close();
ulr 是网站上的一个压缩包。
------解决方案--------------------
while (numBytesToRead > 0) 整块换成下面代码
C# code
int len = 0;
while ((len = receiveStream.Read(buffer, 0, buffer.Length)) > 0)
{
fs.Write(buffer, 0, len);
}
------解决方案--------------------
如果只是下载二进制流,使用简单的一句 new WebClient().DownloadData就行了。