下载网上图片并保存,将获取的网络流转化成内存流

        /// <summary>
        /// 从网上图片路径下载保存保存
        /// </summary>
        /// <param name="imgUrl">网络图片的完整路径</param>
        /// <param name="fileName">保存到那个文件夹</param>
        /// <returns>返回类似路径:文件夹/20190613/190613024304321601.png,返回空说明不是图片,error说明报错</returns>
        public static string SaveImageFromWeb(string imgUrl,string fileName)
        {
            try
            {
                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/"))
                {
                    #region 将获取的网络流转化成内存流
                    MemoryStream memoryStream = new MemoryStream();
                    const int bufferLen = 4096;
                    byte[] buffer = new byte[bufferLen];
                    int count = 0;
                    while ((count = stream.Read(buffer, 0, bufferLen)) > 0)
                    {
                        memoryStream.Write(buffer, 0, count);
                    }
                    #endregion

                    #region 从路径里获取图片扩展名
                    string defaultType = ".jpg";
                    string[] imgTypes = new string[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp" };
                    string imgType = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("."));
                    foreach (string it in imgTypes)
                    {
                        if (imgType.ToLower().Equals(it))
                            break;
                        if (it.Equals(".bmp"))
                            imgType = defaultType;
                    }
                    #endregion

                    //使用时间+随机数重命名文件
                    string strDateTime = DateTime.Now.ToString("yyMMddhhmmssfff");//取得时间字符串
                    Random ran = new Random();
                    string strRan = Convert.ToString(ran.Next(100, 999));//生成三位随机数
                    string saveName = strDateTime + strRan + imgType;
                    string objectName = DateTime.Now.ToString("yyyyMMdd") + "/" + saveName;
                    string imgPath = fileName + "/" + objectName;
                    //此处添加保存图片程序
                    memoryStream.Close();
                    stream.Close();
                    response.Close();
                    return imgPath;
                }
                return "";
            }
            catch(Exception e)
            {
                return "error";
            }
        }

来源:中国建筑市场网

posted @ 2019-06-13 15:00  苦逼的猿人  阅读(102)  评论(0)    收藏  举报