使用HttpWebRequest下载文件方法:获取到文件,把文件逐个字节保存到数组中
public static byte[] GetCatchImages(string imageUrl)
{
byte[] result = null;
try
{
HttpWebRequest request = WebRequest.CreateHttp(imageUrl);
request.Method = "GET";
request.Timeout = 3000;
WebResponse response = request.GetResponse();
int length = (int)response.ContentLength;
Stream stream = response.GetResponseStream();
MemoryStream memoryStream = new MemoryStream();
byte[] buffer = new byte[length];
int i;
//将字节逐个放入到Byte中
while ((i = stream.Read(buffer, 0, buffer.Length)) > 0)
{
memoryStream.Write(buffer, 0, i);
}
result = memoryStream.ToArray();//文件流Byte,需要文件流可直接return,不需要下面的保存代码
memoryStream.Close();
}
catch(Exception ex)
{
return null;
}
return result;
}
**************************************************************************************************************
其中有一个错误,需注意:
问题:获取数据过程中读取文件长度时,Stream.Length报错:此流不支持查找操作
public static byte[] GetCatchImages(string imageUrl)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlimage);
request.Method = "GET";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
if (response.StatusCode == HttpStatusCode.OK)
{
Stream rs =response.GetResponseStream();
var ms = StreamToMemoryStream(rs);
ms.Seek(0, SeekOrigin.Begin);
int buffsize =(int)ms.Length; //rs.Length 此流不支持查找,先转为MemoryStream
byte[] bytes = new byte[buffsize];
ms.Read(bytes, 0, buffsize);
ms.Flush();ms.Close();
rs.Flush();rs.Close();
}
}
}
**************************************************************************************************************