首页 > 编程 > C# > 正文

HttpWebRequest实现下载图片至本地

2020-01-24 00:16:26
字体:
来源:转载
供稿:网友

本文为大家分享了HttpWebRequest实现下载图片至本地的具体代码,供大家参考,具体内容如下

HttpWebRequest发送web请求,获取流文件,保存至本地

using System;using System.IO;using System.Net;using System.Text;using System.Web.Mvc; namespace Web.Controllers{  public class HomeController : Controller  {    string url = "http://www.***.com/Image.aspx?ucode=ucode";     public Stream GetFileToStream(string filePath)    {      FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);      byte[] bytes = new byte[fileStream.Length];      fileStream.Read(bytes, 0, bytes.Length);      fileStream.Close();      Stream streamFile = new MemoryStream(bytes);      return streamFile;    }     public void Method1()    {      string fileName = @"/upload/" + GenerateTimeStamp() + ".jpg";       string webPath = Server.MapPath(fileName);      string pathName = @"d:/" + GenerateTimeStamp() + ".jpg";      HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);       req.ServicePoint.Expect100Continue = false;      req.Method = "GET";      req.KeepAlive = true;       req.ContentType = "image/png";      HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();       System.IO.Stream stream = null;       try      {        //以字符流的方式读取HTTP响应        stream = rsp.GetResponseStream();        System.Drawing.Image.FromStream(stream).Save(pathName);      }      finally      {        // 释放资源        if (stream != null) stream.Close();        if (rsp != null) rsp.Close();      }    }     protected void Method2()    {      string fileName = @"/upload/" + GenerateTimeStamp() + ".jpg";       string webPath = Server.MapPath(fileName);      string pathName = @"d:/" + GenerateTimeStamp() + ".jpg";      HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);      myRequest.Method = "GET";       HttpWebResponse myResponse = null;      try      {        myResponse = (HttpWebResponse)myRequest.GetResponse();        StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);        Stream stream = myResponse.GetResponseStream();         #region 保存下载图片         MemoryStream ms = null;        Byte[] buffer = new Byte[myResponse.ContentLength];        int offset = 0, actuallyRead = 0;        do        {          actuallyRead = stream.Read(buffer, offset, buffer.Length - offset);          offset += actuallyRead;        }        while (actuallyRead > 0);        ms = new MemoryStream(buffer);         byte[] buffurPic = ms.ToArray();        System.IO.File.WriteAllBytes(pathName, buffurPic);         #endregion      }      //异常请求      catch (WebException ex)      {       }    }     protected void Method3()    {      string fileName = @"/upload/" + GenerateTimeStamp() + ".jpg";       string webPath = Server.MapPath(fileName);      string pathName = @"d:/" + GenerateTimeStamp() + ".jpg";      HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);      myRequest.Method = "GET";       HttpWebResponse myResponse = null;      try      {        myResponse = (HttpWebResponse)myRequest.GetResponse();        StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);        Stream stream = myResponse.GetResponseStream();         #region 保存下载图片         FileStream fileStream = new FileStream(pathName, FileMode.Create, FileAccess.Write);        byte[] bytes = new byte[1024];        int readSize = 0;        while ((readSize = stream.Read(bytes, 0, 1024)) > 0)        {          fileStream.Write(bytes, 0, readSize);          fileStream.Flush();        }        #endregion         myResponse.Close();        stream.Close();        fileStream.Close();      }      //异常请求      catch (WebException ex)      {       }      finally      {       }    }     public string GenerateTimeStamp()    {      TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);      return Convert.ToInt64(ts.TotalMilliseconds).ToString();    }  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表