using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Runtime.Serialization.Json; using System.Text; using System.Text.RegularExpressions; namespace Wisdom.JPClient.WeiXin.Utility { public class CommonUtility { public static bool IsGUID(string str) { Match m = Regex.Match(str, @"^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", RegexOptions.IgnoreCase); if (m.Success) { //可以转换 //Guid guid = new Guid(str); return true; } else { //不可转换 return false; } } /// <summary> /// 获取远程图片 /// </summary> /// <param name="imgUrl">远程图片地址</param> /// <param name="path">文件夹名</param> /// <returns></returns> public static int SaveImageFromWeb(string imgUrl, string Pic_Path_IDCard, ref string NewPicName) { NewPicName = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(10, 100); var aaa = Environment.CurrentDirectory; string imgName = imgUrl.ToString().Substring(imgUrl.ToString().LastIndexOf("/") + 1); if (Directory.Exists(System.Web.HttpContext.Current.Server.MapPath("~/UploadFiles/" + Pic_Path_IDCard + "/")) == false)//如果不存在就创建file文件夹 { Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath("~/UploadFiles/" + Pic_Path_IDCard + "/")); } string path = System.Web.HttpContext.Current.Server.MapPath(String.Format("/UploadFiles/" + Pic_Path_IDCard + "/{0}", NewPicName)); //path = path + "//" + imgName; 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; } try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(imgUrl); request.UserAgent = "Mozilla/6.0 (MSIE 6.0; Windows NT 5.1; Natas.Robot)"; request.Timeout = 10000; 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; // CreateDirectory(path); FileStream fso = new FileStream(path, 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(); return 1; } else { return 0; } } catch (WebException) { return 0; } catch (UriFormatException) { return 0; } } /// <summary> /// 返回中文周几, /// </summary> /// <param name="y">年</param> /// <param name="m">月</param> /// <param name="d">日</param> /// <returns></returns> public static string CaculateChineseWeekDay(int y, int m, int d) { if (m == 1) m = 13; if (m == 2) m = 14; int week = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7 + 1; string weekstr = ""; switch (week) { case 1: weekstr = "周一"; break; case 2: weekstr = "周二"; break; case 3: weekstr = "周三"; break; case 4: weekstr = "周四"; break; case 5: weekstr = "周五"; break; case 6: weekstr = "周六"; break; case 7: weekstr = "周日"; break; } return weekstr; } /// <summary> /// 下载保存多媒体文件,返回多媒体保存路径 /// </summary> /// <param name="ACCESS_TOKEN"></param> /// <param name="MEDIA_ID"></param> /// <returns></returns> public static string GetMultimedia(string ACCESS_TOKEN, string MEDIA_ID, string fileName, ref string NewPicName) { NewPicName = DateTime.Now.ToString("yyyyMMddHHmmss") + new Random().Next(10, 100) + ".jpg"; string file = string.Empty; string content = string.Empty; string strpath = string.Empty; string savepath = string.Empty; string stUrl = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=" + ACCESS_TOKEN + "&media_id=" + MEDIA_ID; if (Directory.Exists(System.Web.HttpContext.Current.Server.MapPath("~/UploadFiles/" + fileName + "/")) == false)//如果不存在就创建file文件夹 { Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath("~/UploadFiles/" + fileName + "/")); } HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(stUrl); req.Method = "GET"; using (WebResponse wr = req.GetResponse()) { HttpWebResponse myResponse = (HttpWebResponse)req.GetResponse(); strpath = myResponse.ResponseUri.ToString(); WebClient mywebclient = new WebClient(); savepath = System.Web.HttpContext.Current.Server.MapPath(String.Format("/UploadFiles/" + fileName + "/{0}", NewPicName)); try { mywebclient.DownloadFile(strpath, savepath); file = savepath; } catch (Exception ex) { savepath = ex.ToString(); } } return file; } /// <summary> /// 将指定字符串按指定长度进行截取并加上指定的后缀 /// </summary> /// <param name= "oldStr "> 需要截断的字符串 </param> /// <param name= "maxLength "> 字符串的最大长度 </param> /// <param name= "endWith "> 超过长度的后缀 </param> /// <returns> 如果超过长度,返回截断后的新字符串加上后缀,否则,返回原字符串 </returns> public static string StringTruncat(string oldStr, int maxLength, string endWith) { //判断原字符串是否为空 if (string.IsNullOrEmpty(oldStr)) return oldStr + endWith; //返回字符串的长度必须大于1 if (maxLength < 1) throw new Exception("返回的字符串长度必须大于[0] "); //判断原字符串是否大于最大长度 if (oldStr.Length > maxLength) { //截取原字符串 string strTmp = oldStr.Substring(0, maxLength); //判断后缀是否为空 if (string.IsNullOrEmpty(endWith)) return strTmp; else return strTmp + endWith; } return oldStr; } /// <summary> /// post方法 /// </summary> /// <param name="postUrl">url地址</param> /// <param name="paramData">提交的ParamData对象</param> /// <returns></returns> public static string PostWebRequest<T>(string postUrl, T paramData) { string ret = string.Empty; try { string str_Tem = JsonConvert.SerializeObject(paramData);//将对象转成json串 byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(str_Tem); HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl)); webReq.Method = "POST"; webReq.ContentType = " application/json; charset=utf-8"; webReq.ContentLength = byteArray.Length; Stream newStream = webReq.GetRequestStream(); newStream.Write(byteArray, 0, byteArray.Length);//写入参数 newStream.Close(); HttpWebResponse response = (HttpWebResponse)webReq.GetResponse(); StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8); ret = sr.ReadToEnd(); sr.Close(); response.Close(); newStream.Close(); } catch (Exception ex) { } return ret; } /// <summary> /// C#反序列化JSON /// </summary> /// <typeparam name="T">返回类型</typeparam> /// <param name="jsonString">JSON字符串</param> /// <returns></returns> public static T JsonDeserialize<T>(string strJson) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJson)); T objT = (T)ser.ReadObject(ms); ms.Close(); return objT; } } }