从网络下载图片到本地

/// <summary>
/// 保存图片从web
/// </summary>
/// <param name="imgUrl">图片网页链接</param>
/// <param name="path">保存路径</param>
/// <param name="fileName">保存文件名</param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public static string SaveImageFromWeb(string imgUrl, string path, string fileName)
{
    if (path.Equals(""))
        throw new Exception("未指定保存文件的路径");
    string imgName = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("/") + 1);
    string defaultType = ".jpg";
    string[] imgTypes = new string[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp" };
    string imgType = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("."));
    string imgPath = "";
    foreach (string it in imgTypes)
    {
        if (imgType.ToLower().Equals(it))
            break;
        if (it.Equals(".bmp"))
            imgType = defaultType;
    }

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(imgUrl);
    request.UserAgent = "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Natas.Robot)";
    request.Timeout = 3000;

    WebResponse response = request.GetResponse();
    Stream stream = response.GetResponseStream();

    if (response.ContentType.ToLower().StartsWith("image/"))
    {
        byte[] arrayByte = new byte[1024];
        int imgLong = (int)response.ContentLength;
        int l = 0;

        if (fileName == "")
            fileName = imgName;

        FileStream fso = new FileStream(path + fileName + imgType, FileMode.Create);
        while (l < imgLong)
        {
            int i = stream.Read(arrayByte, 0, 1024);
            fso.Write(arrayByte, 0, i);
            l += i;
        }

        fso.Close();
        stream.Close();
        response.Close();
        imgPath = fileName + imgType;
        return imgPath;
    }
    else
    {
        return "";
    }
}

 

posted @ 2025-11-08 14:12  木子zzgxl  阅读(5)  评论(0)    收藏  举报