将网络图片保存到本地

时间:2022-01-09 22:15:44
using System;
using System.Net;
using System.IO;
using System.Text;

namespace mynamespace
{
public class Downloader
{
/// <summary>
/// 下载图片
/// </summary>
/// <param name="picUrl">图片Http地址</param>
/// <param name="savePath">保存路径</param>
/// <param name="timeOut">Request最大请求时间,如果为-1则无限制</param>
/// <returns></returns>
public static bool DownloadPicture(string picUrl, string savePath,int timeOut)
{
bool value = false;
WebResponse response = null;
Stream stream = null;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(picUrl);
if (timeOut != -1) request.Timeout = timeOut;
response = request.GetResponse();
stream = response.GetResponseStream();
if (!response.ContentType.ToLower().StartsWith("text/"))
value = SaveBinaryFile(response, savePath);
}
finally
{
if(stream!=null) stream.Close();
if (response != null) response.Close();
}
return value;
}
private static bool SaveBinaryFile(WebResponse response, string savePath)
{
bool value = false;
byte[] buffer = new byte[1024];
Stream outStream = null;
Stream inStream = null;
try
{
if (File.Exists(savePath)) File.Delete(savePath);
outStream = System.IO.File.Create(savePath);
inStream = response.GetResponseStream();
int l;
do
{
l = inStream.Read(buffer, 0, buffer.Length);
if (l > 0) outStream.Write(buffer, 0, l);
} while (l > 0);
value = true;
}
finally
{
if(outStream!=null) outStream.Close();
if(inStream!=null) inStream.Close();
}
return value;
}
}
}


//调用
public void DownloadImg()
{
 string imgUrl = "http://static.sporttery.cn/images/2014/12/10/15-1412100T3021H.png";
            string imgFileName = imgUrl.Substring(imgUrl.LastIndexOf('/')+1);
            Downloader.DownloadPicture(imgUrl, imgFileName, 300);
}