C# 使用HttpWebRequest下载文件

    使用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();
        }
    }
}

**************************************************************************************************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值