下载网上图片并保存,将获取的网络流转化成内存流
/// <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";
}
}
来源:中国建筑市场网

浙公网安备 33010602011771号