转自与网络
1 /// <summary> 2 /// web.config操作类 3 /// </summary> 4 public sealed class ConfigHelper 5 { 6 /// <summary> 7 /// 得到AppSettings中的配置字符串信息 8 /// </summary> 9 /// <param name="key"></param> 10 /// <returns></returns> 11 public static string GetConfigString(string key) 12 { 13 object objModel = ConfigurationManager.AppSettings[key]; 14 return objModel.ToString(); 15 } 16 17 /// <summary> 18 /// 得到AppSettings中的配置Bool信息 19 /// </summary> 20 /// <param name="key"></param> 21 /// <returns></returns> 22 public static bool GetConfigBool(string key) 23 { 24 bool result = false; 25 string cfgVal = GetConfigString(key); 26 if (!string.IsNullOrEmpty(cfgVal)) 27 { 28 result = bool.Parse(cfgVal); 29 } 30 return result; 31 } 32 /// <summary> 33 /// 得到AppSettings中的配置Decimal信息 34 /// </summary> 35 /// <param name="key"></param> 36 /// <returns></returns> 37 public static decimal GetConfigDecimal(string key) 38 { 39 decimal result = 0; 40 string cfgVal = GetConfigString(key); 41 if (!string.IsNullOrEmpty(cfgVal)) 42 { 43 result = decimal.Parse(cfgVal); 44 } 45 return result; 46 } 47 /// <summary> 48 /// 得到AppSettings中的配置int信息 49 /// </summary> 50 /// <param name="key"></param> 51 /// <returns></returns> 52 public static int GetConfigInt(string key) 53 { 54 int result = 0; 55 string cfgVal = GetConfigString(key); 56 if (!string.IsNullOrEmpty(cfgVal)) 57 { 58 result = int.Parse(cfgVal); 59 } 60 61 return result; 62 } 63 }
1 /// <summary> 2 /// GZip压缩 3 /// </summary> 4 public class GZip 5 { 6 /// <summary> 7 /// 压缩 8 /// </summary> 9 /// <param name="text">文本</param> 10 public static string Compress(string text) 11 { 12 if (String.IsNullOrEmpty(text)) 13 return string.Empty; 14 byte[] buffer = Encoding.UTF8.GetBytes(text); 15 return Convert.ToBase64String(Compress(buffer)); 16 } 17 18 /// <summary> 19 /// 解压缩 20 /// </summary> 21 /// <param name="text">文本</param> 22 public static string Decompress(string text) 23 { 24 if (String.IsNullOrEmpty(text)) 25 return string.Empty; 26 byte[] buffer = Convert.FromBase64String(text); 27 using (var ms = new MemoryStream(buffer)) 28 { 29 using (var zip = new GZipStream(ms, CompressionMode.Decompress)) 30 { 31 using (var reader = new StreamReader(zip)) 32 { 33 return reader.ReadToEnd(); 34 } 35 } 36 } 37 } 38 39 /// <summary> 40 /// 压缩 41 /// </summary> 42 /// <param name="buffer">字节流</param> 43 public static byte[] Compress(byte[] buffer) 44 { 45 if (buffer == null) 46 return null; 47 using (var ms = new MemoryStream()) 48 { 49 using (var zip = new GZipStream(ms, CompressionMode.Compress, true)) 50 { 51 zip.Write(buffer, 0, buffer.Length); 52 } 53 return ms.ToArray(); 54 } 55 } 56 57 /// <summary> 58 /// 解压缩 59 /// </summary> 60 /// <param name="buffer">字节流</param> 61 public static byte[] Decompress(byte[] buffer) 62 { 63 if (buffer == null) 64 return null; 65 return Decompress(new MemoryStream(buffer)); 66 } 67 68 /// <summary> 69 /// 压缩 70 /// </summary> 71 /// <param name="stream">流</param> 72 public static byte[] Compress(Stream stream) 73 { 74 if (stream == null || stream.Length == 0) 75 return null; 76 return Compress(StreamToBytes(stream)); 77 } 78 79 /// <summary> 80 /// 解压缩 81 /// </summary> 82 /// <param name="stream">流</param> 83 public static byte[] Decompress(Stream stream) 84 { 85 if (stream == null || stream.Length == 0) 86 return null; 87 using (var zip = new GZipStream(stream, CompressionMode.Decompress)) 88 { 89 using (var reader = new StreamReader(zip)) 90 { 91 return Encoding.UTF8.GetBytes(reader.ReadToEnd()); 92 } 93 } 94 } 95 /// <summary> 96 /// 流转换为字节流 97 /// </summary> 98 /// <param name="stream">流</param> 99 public static byte[] StreamToBytes(Stream stream) 100 { 101 stream.Seek(0, SeekOrigin.Begin); 102 var buffer = new byte[stream.Length]; 103 stream.Read(buffer, 0, buffer.Length); 104 return buffer; 105 } 106 }
1 /// <summary> 2 /// Cookie相关操作类 3 /// </summary> 4 public class CookieHelper 5 { 6 /// <summary> 7 /// 清除指定Cookie 8 /// </summary> 9 /// <param name="cookiename">cookiename</param> 10 public static void ClearCookie(string cookiename) 11 { 12 HttpCookie cookie = HttpContext.Current.Request.Cookies[cookiename]; 13 if (cookie == null) return; 14 cookie.Expires = DateTime.Now.AddYears(-3); 15 HttpContext.Current.Response.Cookies.Add(cookie); 16 } 17 /// <summary> 18 /// 获取指定Cookie值 19 /// </summary> 20 /// <param name="cookiename">cookiename</param> 21 /// <returns></returns> 22 public static string GetCookieValue(string cookiename) 23 { 24 HttpCookie cookie = HttpContext.Current.Request.Cookies[cookiename]; 25 string str = string.Empty; 26 if (cookie != null) 27 { 28 str = cookie.Value; 29 } 30 return str; 31 } 32 /// <summary> 33 /// 添加一个Cookie(24小时过期) 34 /// </summary> 35 /// <param name="cookiename"></param> 36 /// <param name="cookievalue"></param> 37 public static void SetCookie(string cookiename, string cookievalue) 38 { 39 SetCookie(cookiename, cookievalue, DateTime.Now.AddDays(1.0)); 40 } 41 /// <summary> 42 /// 添加一个Cookie 43 /// </summary> 44 /// <param name="cookiename">cookie名</param> 45 /// <param name="cookievalue">cookie值</param> 46 /// <param name="expireTime">过期时间 expireTime</param> 47 public static void SetCookie(string cookiename, string cookievalue, DateTime expireTime) 48 { 49 var cookie = new HttpCookie(cookiename) 50 { 51 Value = cookievalue, 52 Expires = expireTime 53 }; 54 HttpContext.Current.Response.Cookies.Add(cookie); 55 } 56 }
1 public class EMailHelper 2 { 3 /// <summary> 4 /// 邮件服务器地址 5 /// </summary> 6 public string EMailServer { get; set; } 7 /// <summary> 8 /// 用户名 9 /// </summary> 10 public string EMailUserName { get; set; } 11 /// <summary> 12 /// 密码 13 /// </summary> 14 public string EMailPassword { get; set; } 15 /// <summary> 16 /// 名称 17 /// </summary> 18 public string EMailName { get; set; } 19 20 /// <summary> 21 /// 同步发送邮件 22 /// </summary> 23 /// <param name="to">收件人邮箱地址</param> 24 /// <param name="subject">主题</param> 25 /// <param name="body">内容</param> 26 /// <param name="encoding">编码</param> 27 /// <param name="isBodyHtml">是否Html</param> 28 /// <param name="enableSsl">是否SSL加密连接</param> 29 /// <returns>是否成功</returns> 30 public bool Send(string to, string subject, string body, string encoding = "UTF-8", bool isBodyHtml = true, bool enableSsl = false) 31 { 32 try 33 { 34 MailMessage message = new MailMessage(); 35 // 接收人邮箱地址 36 message.To.Add(new MailAddress(to)); 37 message.From = new MailAddress(EMailUserName, EMailName); 38 message.BodyEncoding = Encoding.GetEncoding(encoding); 39 message.Body = body; 40 //GB2312 41 message.SubjectEncoding = Encoding.GetEncoding(encoding); 42 message.Subject = subject; 43 message.IsBodyHtml = isBodyHtml; 44 45 SmtpClient smtpclient = new SmtpClient(EMailServer, 25); 46 smtpclient.Credentials = new System.Net.NetworkCredential(EMailUserName, EMailPassword); 47 //SSL连接 48 smtpclient.EnableSsl = enableSsl; 49 smtpclient.Send(message); 50 return true; 51 } 52 catch (Exception) 53 { 54 throw; 55 } 56 } 57 /// <summary> 58 /// 异步发送邮件 独立线程 59 /// </summary> 60 /// <param name="to">邮件接收人</param> 61 /// <param name="title">邮件标题</param> 62 /// <param name="body">邮件内容</param> 63 /// <param name="port">端口号</param> 64 /// <returns></returns> 65 public void SendByThread(string to, string title, string body, int port = 25) 66 { 67 new Thread(new ThreadStart(delegate() 68 { 69 try 70 { 71 SmtpClient smtp = new SmtpClient(); 72 //邮箱的smtp地址 73 smtp.Host = EMailServer; 74 //端口号 75 smtp.Port = port; 76 //构建发件人的身份凭据类 77 smtp.Credentials = new NetworkCredential(EMailUserName, EMailPassword); 78 //构建消息类 79 MailMessage objMailMessage = new MailMessage(); 80 //设置优先级 81 objMailMessage.Priority = MailPriority.High; 82 //消息发送人 83 objMailMessage.From = new MailAddress(EMailUserName, EMailName, System.Text.Encoding.UTF8); 84 //收件人 85 objMailMessage.To.Add(to); 86 //标题 87 objMailMessage.Subject = title.Trim(); 88 //标题字符编码 89 objMailMessage.SubjectEncoding = System.Text.Encoding.UTF8; 90 //正文 91 objMailMessage.Body = body.Trim(); 92 objMailMessage.IsBodyHtml = true; 93 //内容字符编码 94 objMailMessage.BodyEncoding = System.Text.Encoding.UTF8; 95 //发送 96 smtp.Send(objMailMessage); 97 } 98 catch (Exception) 99 { 100 throw; 101 } 102 103 })).Start(); 104 } 105 }
1 public class CryptoHelper 2 { 3 #region MD5加密 4 5 /// <summary> 6 /// MD5加密 7 /// </summary> 8 /// <param name="plainText">明文</param> 9 /// <returns></returns> 10 public static string MD5Encrypt(string plainText) 11 { 12 MD5 md5 = new MD5CryptoServiceProvider(); 13 byte[] fromData = Encoding.Unicode.GetBytes(plainText); 14 byte[] targetData = md5.ComputeHash(fromData); 15 string byte2String = null; 16 for (int i = 0; i < targetData.Length; i++) 17 { 18 byte2String += targetData[i].ToString("x"); 19 } 20 return byte2String; 21 22 //以下方法亦可 23 //string MD5encryptStr = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile( 24 // plainText, "MD5"); 25 //return MD5encryptStr; 26 } 27 28 #endregion 29 30 #region DES加密 31 32 /// <summary> 33 /// DES加密 34 /// </summary> 35 /// <param name="plainText"></param> 36 /// <returns></returns> 37 public static string DESEncrypt(string plainText) 38 { 39 return DESEncrypt(plainText, "Mcmurphy"); 40 } 41 42 /// <summary> 43 /// DES加密 44 /// </summary> 45 /// <param name="plainText"></param> 46 /// <param name="sKey"></param> 47 /// <returns></returns> 48 public static string DESEncrypt(string plainText, string sKey) 49 { 50 var des = new DESCryptoServiceProvider(); 51 byte[] inputByteArray = Encoding.Default.GetBytes(plainText); 52 var hashPasswordForStoringInConfigFile = 53 System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5"); 54 if (hashPasswordForStoringInConfigFile != null) 55 des.Key = Encoding.ASCII.GetBytes(hashPasswordForStoringInConfigFile.Substring(0, 8)); 56 57 var passwordForStoringInConfigFile = 58 System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5"); 59 if (passwordForStoringInConfigFile != null) 60 des.IV = Encoding.ASCII.GetBytes(passwordForStoringInConfigFile.Substring(0, 8)); 61 62 var ms = new MemoryStream(); 63 var cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); 64 cs.Write(inputByteArray, 0, inputByteArray.Length); 65 cs.FlushFinalBlock(); 66 var ret = new StringBuilder(); 67 foreach (byte b in ms.ToArray()) 68 { 69 ret.AppendFormat("{0:X2}", b); 70 } 71 return ret.ToString(); 72 } 73 74 #endregion 75 76 #region DES解密 77 78 79 /// <summary> 80 /// DES解密 81 /// </summary> 82 /// <param name="plainText"></param> 83 /// <returns></returns> 84 public static string DESDecrypt(string plainText) 85 { 86 return DESDecrypt(plainText, "Mcmurphy"); 87 } 88 89 /// <summary> 90 /// DES解密 91 /// </summary> 92 /// <param name="plainText"></param> 93 /// <param name="sKey"></param> 94 /// <returns></returns> 95 public static string DESDecrypt(string plainText, string sKey) 96 { 97 var des = new DESCryptoServiceProvider(); 98 int len = plainText.Length/2; 99 var inputByteArray = new byte[len]; 100 int x; 101 for (x = 0; x < len; x++) 102 { 103 int i = Convert.ToInt32(plainText.Substring(x*2, 2), 16); 104 inputByteArray[x] = (byte) i; 105 } 106 var hashPasswordForStoringInConfigFile = 107 System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5"); 108 if (hashPasswordForStoringInConfigFile != null) 109 des.Key = Encoding.ASCII.GetBytes(hashPasswordForStoringInConfigFile.Substring(0, 8)); 110 111 var passwordForStoringInConfigFile = 112 System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5"); 113 if (passwordForStoringInConfigFile != null) 114 des.IV = Encoding.ASCII.GetBytes(passwordForStoringInConfigFile.Substring(0, 8)); 115 116 var ms = new MemoryStream(); 117 var cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); 118 cs.Write(inputByteArray, 0, inputByteArray.Length); 119 cs.FlushFinalBlock(); 120 return Encoding.Default.GetString(ms.ToArray()); 121 } 122 123 #endregion 124 125 #region TripleDES加密 126 127 /// <summary> 128 /// TripleDES加密 129 /// </summary> 130 public static string TripleDESEncrypting(string strSource) 131 { 132 try 133 { 134 byte[] bytIn = Encoding.Default.GetBytes(strSource); 135 byte[] key = { 136 42, 16, 93, 156, 78, 4, 218, 32, 15, 167, 44, 80, 26, 20, 155, 112, 2, 94, 11, 204, 119 137 , 138 35, 184, 197 139 }; //定义密钥 140 byte[] IV = {55, 103, 246, 79, 36, 99, 167, 3}; //定义偏移量 141 var TripleDES = new TripleDESCryptoServiceProvider {IV = IV, Key = key}; 142 ICryptoTransform encrypto = TripleDES.CreateEncryptor(); 143 var ms = new MemoryStream(); 144 var cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write); 145 cs.Write(bytIn, 0, bytIn.Length); 146 cs.FlushFinalBlock(); 147 byte[] bytOut = ms.ToArray(); 148 return Convert.ToBase64String(bytOut); 149 } 150 catch (Exception ex) 151 { 152 throw new Exception("加密时候出现错误!错误提示: " + ex.Message); 153 } 154 } 155 156 #endregion 157 158 #region TripleDES解密 159 160 /// <summary> 161 /// TripleDES解密 162 /// </summary> 163 public static string TripleDESDecrypting(string Source) 164 { 165 try 166 { 167 byte[] bytIn = Convert.FromBase64String(Source); 168 byte[] key = { 169 42, 16, 93, 156, 78, 4, 218, 32, 15, 167, 44, 80, 26, 20, 155, 112, 2, 94, 11, 204, 119 170 , 171 35, 184, 197 172 }; //定义密钥 173 byte[] IV = {55, 103, 246, 79, 36, 99, 167, 3}; //定义偏移量 174 var TripleDES = new TripleDESCryptoServiceProvider {IV = IV, Key = key}; 175 ICryptoTransform encrypto = TripleDES.CreateDecryptor(); 176 var ms = new MemoryStream(bytIn, 0, bytIn.Length); 177 var cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read); 178 var strd = new StreamReader(cs, Encoding.Default); 179 return strd.ReadToEnd(); 180 } 181 catch (Exception ex) 182 { 183 throw new Exception("解密时候出现错误!错误提示: " + ex.Message); 184 } 185 } 186 187 #endregion 188 189 }
1 /// <summary> 2 /// 文件操作夹(暂时未支持跨平台) 3 /// </summary> 4 public static class DirFileHelper 5 { 6 #region 检测指定目录是否存在 7 /// <summary> 8 /// 检测指定目录是否存在 9 /// </summary> 10 /// <param name="directoryPath">目录的绝对路径</param> 11 /// <returns></returns> 12 public static bool IsExistDirectory(string directoryPath) 13 { 14 return Directory.Exists(directoryPath); 15 } 16 #endregion 17 18 #region 检测指定文件是否存在,如果存在返回true 19 /// <summary> 20 /// 检测指定文件是否存在,如果存在则返回true。 21 /// </summary> 22 /// <param name="filePath">文件的绝对路径</param> 23 public static bool IsExistFile(string filePath) 24 { 25 return File.Exists(filePath); 26 } 27 #endregion 28 29 #region 获取指定目录中的文件列表 30 /// <summary> 31 /// 获取指定目录中所有文件列表 32 /// </summary> 33 /// <param name="directoryPath">指定目录的绝对路径</param> 34 public static string[] GetFileNames(string directoryPath) 35 { 36 //如果目录不存在,则抛出异常 37 if (!IsExistDirectory(directoryPath)) 38 { 39 throw new FileNotFoundException(); 40 } 41 42 //获取文件列表 43 return Directory.GetFiles(directoryPath); 44 } 45 #endregion 46 47 #region 获取指定目录中所有子目录列表,若要搜索嵌套的子目录列表,请使用重载方法. 48 /// <summary> 49 /// 获取指定目录中所有子目录列表,若要搜索嵌套的子目录列表,请使用重载方法. 50 /// </summary> 51 /// <param name="directoryPath">指定目录的绝对路径</param> 52 public static string[] GetDirectories(string directoryPath) 53 { 54 try 55 { 56 return Directory.GetDirectories(directoryPath); 57 } 58 catch (IOException ex) 59 { 60 throw ex; 61 } 62 } 63 #endregion 64 65 #region 获取指定目录及子目录中所有文件列表 66 /// <summary> 67 /// 获取指定目录及子目录中所有文件列表 68 /// </summary> 69 /// <param name="directoryPath">指定目录的绝对路径</param> 70 /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。 71 /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param> 72 /// <param name="isSearchChild">是否搜索子目录</param> 73 public static string[] GetFileNames(string directoryPath, string searchPattern, bool isSearchChild) 74 { 75 //如果目录不存在,则抛出异常 76 if (!IsExistDirectory(directoryPath)) 77 { 78 throw new FileNotFoundException(); 79 } 80 81 try 82 { 83 if (isSearchChild) 84 { 85 return Directory.GetFiles(directoryPath, searchPattern, SearchOption.AllDirectories); 86 } 87 else 88 { 89 return Directory.GetFiles(directoryPath, searchPattern, SearchOption.TopDirectoryOnly); 90 } 91 } 92 catch (IOException ex) 93 { 94 throw ex; 95 } 96 } 97 #endregion 98 99 #region 检测指定目录是否为空 100 /// <summary> 101 /// 检测指定目录是否为空 102 /// </summary> 103 /// <param name="directoryPath">指定目录的绝对路径</param> 104 public static bool IsEmptyDirectory(string directoryPath) 105 { 106 try 107 { 108 //判断是否存在文件 109 string[] fileNames = GetFileNames(directoryPath); 110 if (fileNames.Length > 0) 111 { 112 return false; 113 } 114 115 //判断是否存在文件夹 116 string[] directoryNames = GetDirectories(directoryPath); 117 if (directoryNames.Length > 0) 118 { 119 return false; 120 } 121 122 return true; 123 } 124 catch 125 { 126 //这里记录日志 127 //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message); 128 return true; 129 } 130 } 131 #endregion 132 133 #region 检测指定目录中是否存在指定的文件 134 /// <summary> 135 /// 检测指定目录中是否存在指定的文件,若要搜索子目录请使用重载方法. 136 /// </summary> 137 /// <param name="directoryPath">指定目录的绝对路径</param> 138 /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。 139 /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param> 140 public static bool Contains(string directoryPath, string searchPattern) 141 { 142 try 143 { 144 //获取指定的文件列表 145 string[] fileNames = GetFileNames(directoryPath, searchPattern, false); 146 147 //判断指定文件是否存在 148 if (fileNames.Length == 0) 149 { 150 return false; 151 } 152 else 153 { 154 return true; 155 } 156 } 157 catch (Exception ex) 158 { 159 throw new Exception(ex.Message); 160 //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message); 161 } 162 } 163 164 /// <summary> 165 /// 检测指定目录中是否存在指定的文件 166 /// </summary> 167 /// <param name="directoryPath">指定目录的绝对路径</param> 168 /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。 169 /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param> 170 /// <param name="isSearchChild">是否搜索子目录</param> 171 public static bool Contains(string directoryPath, string searchPattern, bool isSearchChild) 172 { 173 try 174 { 175 //获取指定的文件列表 176 string[] fileNames = GetFileNames(directoryPath, searchPattern, true); 177 178 //判断指定文件是否存在 179 if (fileNames.Length == 0) 180 { 181 return false; 182 } 183 else 184 { 185 return true; 186 } 187 } 188 catch (Exception ex) 189 { 190 throw new Exception(ex.Message); 191 //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message); 192 } 193 } 194 #endregion 195 196 #region 创建目录 197 /// <summary> 198 /// 创建目录 199 /// </summary> 200 /// <param name="dir">要创建的目录路径包括目录名</param> 201 public static void CreateDir(string dir) 202 { 203 if (dir.Length == 0) return; 204 if (!Directory.Exists(dir)) 205 Directory.CreateDirectory(dir); 206 } 207 #endregion 208 209 #region 删除目录 210 /// <summary> 211 /// 删除目录 212 /// </summary> 213 /// <param name="dir">要删除的目录路径和名称</param> 214 public static void DeleteDir(string dir) 215 { 216 if (dir.Length == 0) return; 217 if (Directory.Exists(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir)) 218 Directory.Delete(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir); 219 } 220 #endregion 221 222 #region 删除文件 223 /// <summary> 224 /// 删除文件 225 /// </summary> 226 /// <param name="file">要删除的文件路径和名称</param> 227 public static void DeleteFile(string file) 228 { 229 if (File.Exists( file)) 230 File.Delete( file); 231 } 232 #endregion 233 234 #region 创建文件 235 /// <summary> 236 /// 创建文件 237 /// </summary> 238 /// <param name="dir">带后缀的文件名</param> 239 /// <param name="pagestr">文件内容</param> 240 public static void CreateFile(string dir, string pagestr) 241 { 242 dir = dir.Replace("/", "\"); 243 if (dir.IndexOf("\") > -1) 244 CreateDir(dir.Substring(0, dir.LastIndexOf("\"))); 245 System.IO.StreamWriter sw = new System.IO.StreamWriter(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir, false, System.Text.Encoding.GetEncoding("GB2312")); 246 sw.Write(pagestr); 247 sw.Close(); 248 } 249 #endregion 250 251 #region 移动文件(剪贴--粘贴) 252 /// <summary> 253 /// 移动文件(剪贴--粘贴) 254 /// </summary> 255 /// <param name="dir1">要移动的文件的路径及全名(包括后缀)</param> 256 /// <param name="dir2">文件移动到新的位置,并指定新的文件名</param> 257 public static void MoveFile(string dir1, string dir2) 258 { 259 dir1 = dir1.Replace("/", "\"); 260 dir2 = dir2.Replace("/", "\"); 261 if (File.Exists(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir1)) 262 File.Move(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir1, System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir2); 263 } 264 #endregion 265 266 #region 复制文件 267 /// <summary> 268 /// 复制文件 269 /// </summary> 270 /// <param name="dir1">要复制的文件的路径已经全名(包括后缀)</param> 271 /// <param name="dir2">目标位置,并指定新的文件名</param> 272 public static void CopyFile(string dir1, string dir2) 273 { 274 //dir1 = dir1.Replace("/", "\"); 275 //dir2 = dir2.Replace("/", "\"); 276 if (File.Exists(dir1)) 277 { 278 File.Copy(dir1,dir2, true); 279 } 280 /*if (File.Exists(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir1)) 281 { 282 File.Copy(System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir1, System.Web.HttpContext.Current.Request.PhysicalApplicationPath + "\" + dir2, true); 283 }*/ 284 } 285 #endregion 286 287 #region 根据时间得到目录名 / 格式:yyyyMMdd 或者 HHmmssff 288 /// <summary> 289 /// 根据时间得到目录名yyyyMMdd 290 /// </summary> 291 /// <returns></returns> 292 public static string GetDateDir() 293 { 294 return DateTime.Now.ToString("yyyyMMdd"); 295 } 296 /// <summary> 297 /// 根据时间得到文件名HHmmssff 298 /// </summary> 299 /// <returns></returns> 300 public static string GetDateFile() 301 { 302 return DateTime.Now.ToString("HHmmssff"); 303 } 304 #endregion 305 306 #region 复制文件夹 307 /// <summary> 308 /// 复制文件夹(递归) 309 /// </summary> 310 /// <param name="varFromDirectory">源文件夹路径</param> 311 /// <param name="varToDirectory">目标文件夹路径</param> 312 public static void CopyFolder(string varFromDirectory, string varToDirectory) 313 { 314 Directory.CreateDirectory(varToDirectory); 315 316 if (!Directory.Exists(varFromDirectory)) return; 317 318 string[] directories = Directory.GetDirectories(varFromDirectory); 319 320 if (directories.Length > 0) 321 { 322 foreach (string d in directories) 323 { 324 CopyFolder(d, varToDirectory + d.Substring(d.LastIndexOf("\"))); 325 } 326 } 327 string[] files = Directory.GetFiles(varFromDirectory); 328 if (files.Length > 0) 329 { 330 foreach (string s in files) 331 { 332 File.Copy(s, varToDirectory + s.Substring(s.LastIndexOf("\")), true); 333 } 334 } 335 } 336 #endregion 337 338 #region 检查文件,如果文件不存在则创建 339 /// <summary> 340 /// 检查文件,如果文件不存在则创建 341 /// </summary> 342 /// <param name="FilePath">路径,包括文件名</param> 343 public static void ExistsFile(string FilePath) 344 { 345 //if(!File.Exists(FilePath)) 346 //File.Create(FilePath); 347 //以上写法会报错,详细解释请看下文......... 348 if (!File.Exists(FilePath)) 349 { 350 FileStream fs = File.Create(FilePath); 351 fs.Close(); 352 } 353 } 354 #endregion 355 356 #region 删除指定文件夹对应其他文件夹里的文件 357 /// <summary> 358 /// 删除指定文件夹对应其他文件夹里的文件 359 /// </summary> 360 /// <param name="varFromDirectory">指定文件夹路径</param> 361 /// <param name="varToDirectory">对应其他文件夹路径</param> 362 public static void DeleteFolderFiles(string varFromDirectory, string varToDirectory) 363 { 364 Directory.CreateDirectory(varToDirectory); 365 366 if (!Directory.Exists(varFromDirectory)) return; 367 368 string[] directories = Directory.GetDirectories(varFromDirectory); 369 370 if (directories.Length > 0) 371 { 372 foreach (string d in directories) 373 { 374 DeleteFolderFiles(d, varToDirectory + d.Substring(d.LastIndexOf("\"))); 375 } 376 } 377 378 379 string[] files = Directory.GetFiles(varFromDirectory); 380 381 if (files.Length > 0) 382 { 383 foreach (string s in files) 384 { 385 File.Delete(varToDirectory + s.Substring(s.LastIndexOf("\"))); 386 } 387 } 388 } 389 #endregion 390 391 #region 从文件的绝对路径中获取文件名( 包含扩展名 ) 392 /// <summary> 393 /// 从文件的绝对路径中获取文件名( 包含扩展名 ) 394 /// </summary> 395 /// <param name="filePath">文件的绝对路径</param> 396 public static string GetFileName(string filePath) 397 { 398 //获取文件的名称 399 FileInfo fi = new FileInfo(filePath); 400 return fi.Name; 401 } 402 #endregion 403 404 #region 创建一个目录 405 /// <summary> 406 /// 创建一个目录 407 /// </summary> 408 /// <param name="directoryPath">目录的绝对路径</param> 409 public static bool CreateDirectory(string directoryPath) 410 { 411 //如果目录不存在则创建该目录 412 if (!IsExistDirectory(directoryPath)) 413 { 414 try 415 { 416 Directory.CreateDirectory(directoryPath); 417 return true; 418 } 419 catch{ 420 return false; 421 } 422 } 423 else { 424 return false; 425 } 426 } 427 #endregion 428 429 #region 创建一个文件 430 /// <summary> 431 /// 创建一个文件。 432 /// </summary> 433 /// <param name="filePath">文件的绝对路径</param> 434 public static void CreateFile(string filePath) 435 { 436 try 437 { 438 //如果文件不存在则创建该文件 439 if (!IsExistFile(filePath)) 440 { 441 //创建一个FileInfo对象 442 FileInfo file = new FileInfo(filePath); 443 444 //创建文件 445 FileStream fs = file.Create(); 446 447 //关闭文件流 448 fs.Close(); 449 } 450 } 451 catch (Exception ex) 452 { 453 //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message); 454 throw ex; 455 } 456 } 457 458 /// <summary> 459 /// 创建一个文件,并将字节流写入文件。 460 /// </summary> 461 /// <param name="filePath">文件的绝对路径</param> 462 /// <param name="buffer">二进制流数据</param> 463 public static void CreateFile(string filePath, byte[] buffer) 464 { 465 try 466 { 467 //如果文件不存在则创建该文件 468 if (!IsExistFile(filePath)) 469 { 470 //创建一个FileInfo对象 471 FileInfo file = new FileInfo(filePath); 472 473 //创建文件 474 FileStream fs = file.Create(); 475 476 //写入二进制流 477 fs.Write(buffer, 0, buffer.Length); 478 479 //关闭文件流 480 fs.Close(); 481 } 482 } 483 catch (Exception ex) 484 { 485 //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message); 486 throw ex; 487 } 488 } 489 #endregion 490 491 #region 获取文本文件的行数 492 /// <summary> 493 /// 获取文本文件的行数 494 /// </summary> 495 /// <param name="filePath">文件的绝对路径</param> 496 public static int GetLineCount(string filePath) 497 { 498 //将文本文件的各行读到一个字符串数组中 499 string[] rows = File.ReadAllLines(filePath); 500 501 //返回行数 502 return rows.Length; 503 } 504 #endregion 505 506 #region 获取一个文件的长度 507 /// <summary> 508 /// 获取一个文件的长度,单位为Byte 509 /// </summary> 510 /// <param name="filePath">文件的绝对路径</param> 511 public static int GetFileSize(string filePath) 512 { 513 //创建一个文件对象 514 FileInfo fi = new FileInfo(filePath); 515 516 //获取文件的大小 517 return (int)fi.Length; 518 } 519 #endregion 520 521 #region 获取指定目录中的子目录列表 522 /// <summary> 523 /// 获取指定目录及子目录中所有子目录列表 524 /// </summary> 525 /// <param name="directoryPath">指定目录的绝对路径</param> 526 /// <param name="searchPattern">模式字符串,"*"代表0或N个字符,"?"代表1个字符。 527 /// 范例:"Log*.xml"表示搜索所有以Log开头的Xml文件。</param> 528 /// <param name="isSearchChild">是否搜索子目录</param> 529 public static string[] GetDirectories(string directoryPath, string searchPattern, bool isSearchChild) 530 { 531 try 532 { 533 if (isSearchChild) 534 { 535 return Directory.GetDirectories(directoryPath, searchPattern, SearchOption.AllDirectories); 536 } 537 else 538 { 539 return Directory.GetDirectories(directoryPath, searchPattern, SearchOption.TopDirectoryOnly); 540 } 541 } 542 catch (IOException ex) 543 { 544 throw ex; 545 } 546 } 547 #endregion 548 549 #region 向文本文件写入内容 550 551 /// <summary> 552 /// 向文本文件中写入内容 553 /// </summary> 554 /// <param name="filePath">文件的绝对路径</param> 555 /// <param name="text">写入的内容</param> 556 /// <param name="encoding">编码</param> 557 public static void WriteText(string filePath, string text, Encoding encoding) 558 { 559 //向文件写入内容 560 File.WriteAllText(filePath, text, encoding); 561 } 562 #endregion 563 564 #region 向文本文件的尾部追加内容 565 /// <summary> 566 /// 向文本文件的尾部追加内容 567 /// </summary> 568 /// <param name="filePath">文件的绝对路径</param> 569 /// <param name="content">写入的内容</param> 570 public static void AppendText(string filePath, string content) 571 { 572 File.AppendAllText(filePath, content); 573 } 574 #endregion 575 576 #region 将现有文件的内容复制到新文件中 577 /// <summary> 578 /// 将源文件的内容复制到目标文件中 579 /// </summary> 580 /// <param name="sourceFilePath">源文件的绝对路径</param> 581 /// <param name="destFilePath">目标文件的绝对路径</param> 582 public static void Copy(string sourceFilePath, string destFilePath) 583 { 584 File.Copy(sourceFilePath, destFilePath, true); 585 } 586 #endregion 587 588 #region 将文件移动到指定目录 589 /// <summary> 590 /// 将文件移动到指定目录 591 /// </summary> 592 /// <param name="sourceFilePath">需要移动的源文件的绝对路径</param> 593 /// <param name="descDirectoryPath">移动到的目录的绝对路径</param> 594 public static void Move(string sourceFilePath, string descDirectoryPath) 595 { 596 //获取源文件的名称 597 string sourceFileName = GetFileName(sourceFilePath); 598 599 if (IsExistDirectory(descDirectoryPath)) 600 { 601 //如果目标中存在同名文件,则删除 602 if (IsExistFile(descDirectoryPath + "\" + sourceFileName)) 603 { 604 DeleteFile(descDirectoryPath + "\" + sourceFileName); 605 } 606 //将文件移动到指定目录 607 File.Move(sourceFilePath, descDirectoryPath + "\" + sourceFileName); 608 } 609 } 610 #endregion 611 612 #region 从文件的绝对路径中获取文件名( 不包含扩展名 ) 613 /// <summary> 614 /// 从文件的绝对路径中获取文件名( 不包含扩展名 ) 615 /// </summary> 616 /// <param name="filePath">文件的绝对路径</param> 617 public static string GetFileNameNoExtension(string filePath) 618 { 619 //获取文件的名称 620 FileInfo fi = new FileInfo(filePath); 621 return fi.Name.Split('.')[0]; 622 } 623 #endregion 624 625 #region 从文件的绝对路径中获取扩展名 626 /// <summary> 627 /// 从文件的绝对路径中获取扩展名 628 /// </summary> 629 /// <param name="filePath">文件的绝对路径</param> 630 public static string GetExtension(string filePath) 631 { 632 //获取文件的名称 633 FileInfo fi = new FileInfo(filePath); 634 return fi.Extension; 635 } 636 #endregion 637 638 #region 清空指定目录 639 /// <summary> 640 /// 清空指定目录下所有文件及子目录,但该目录依然保存. 641 /// </summary> 642 /// <param name="directoryPath">指定目录的绝对路径</param> 643 public static void ClearDirectory(string directoryPath) 644 { 645 if (IsExistDirectory(directoryPath)) 646 { 647 //删除目录中所有的文件 648 string[] fileNames = GetFileNames(directoryPath); 649 for (int i = 0; i < fileNames.Length; i++) 650 { 651 DeleteFile(fileNames[i]); 652 } 653 654 //删除目录中所有的子目录 655 string[] directoryNames = GetDirectories(directoryPath); 656 for (int i = 0; i < directoryNames.Length; i++) 657 { 658 DeleteDirectory(directoryNames[i]); 659 } 660 } 661 } 662 #endregion 663 664 #region 清空文件内容 665 /// <summary> 666 /// 清空文件内容 667 /// </summary> 668 /// <param name="filePath">文件的绝对路径</param> 669 public static void ClearFile(string filePath) 670 { 671 //删除文件 672 File.Delete(filePath); 673 674 //重新创建该文件 675 CreateFile(filePath); 676 } 677 #endregion 678 679 #region 删除指定目录 680 /// <summary> 681 /// 删除指定目录及其所有子目录 682 /// </summary> 683 /// <param name="directoryPath">指定目录的绝对路径</param> 684 public static void DeleteDirectory(string directoryPath) 685 { 686 if (IsExistDirectory(directoryPath)) 687 { 688 Directory.Delete(directoryPath, true); 689 } 690 } 691 #endregion 692 }
1 /// <summary> 2 /// 文件下载类 3 /// </summary> 4 public class FileDownHelper 5 { 6 public FileDownHelper() 7 { } 8 /// <summary> 9 /// 获取文件扩展名 10 /// </summary> 11 public static string FileNameExtension(string FileName) 12 { 13 return Path.GetExtension(MapPathFile(FileName)); 14 } 15 16 /// <summary> 17 /// 获取物理地址 18 /// </summary> 19 public static string MapPathFile(string FileName) 20 { 21 return HttpContext.Current.Server.MapPath(FileName); 22 } 23 /// <summary> 24 /// 验证文件是否存在 25 /// </summary> 26 /// <param name="FileName"></param> 27 /// <returns></returns> 28 public static bool FileExists(string FileName) 29 { 30 string destFileName = FileName; 31 if (File.Exists(destFileName)) 32 { 33 return true; 34 } 35 else 36 { 37 return false; 38 } 39 } 40 /// <summary> 41 /// 普通下载 42 /// </summary> 43 /// <param name="fileName">文件虚拟路径</param> 44 /// /// <param name="name">返回给客户端的文件名称</param> 45 public static void DownLoadold(string fileName, string name) 46 { 47 string destFileName = fileName; 48 if (File.Exists(destFileName)) 49 { 50 FileInfo fi = new FileInfo(destFileName); 51 HttpContext.Current.Response.Clear(); 52 HttpContext.Current.Response.ClearHeaders(); 53 HttpContext.Current.Response.Buffer = false; 54 HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(name, System.Text.Encoding.UTF8)); 55 HttpContext.Current.Response.AppendHeader("Content-Length", fi.Length.ToString()); 56 HttpContext.Current.Response.ContentType = "application/octet-stream"; 57 HttpContext.Current.Response.WriteFile(destFileName); 58 HttpContext.Current.Response.Flush(); 59 HttpContext.Current.Response.End(); 60 } 61 } 62 63 /// <summary> 64 /// 分块下载 65 /// </summary> 66 /// <param name="FileName">文件虚拟路径</param> 67 public static void DownLoad(string FileName) 68 { 69 string filePath = MapPathFile(FileName); 70 long chunkSize = 204800; //指定块大小 71 byte[] buffer = new byte[chunkSize]; //建立一个200K的缓冲区 72 long dataToRead = 0; //已读的字节数 73 FileStream stream = null; 74 try 75 { 76 //打开文件 77 stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read); 78 dataToRead = stream.Length; 79 80 //添加Http头 81 HttpContext.Current.Response.ContentType = "application/octet-stream"; 82 HttpContext.Current.Response.AddHeader("Content-Disposition", "attachement;filename=" + HttpUtility.UrlEncode(Path.GetFileName(filePath))); 83 HttpContext.Current.Response.AddHeader("Content-Length", dataToRead.ToString()); 84 85 while (dataToRead > 0) 86 { 87 if (HttpContext.Current.Response.IsClientConnected) 88 { 89 int length = stream.Read(buffer, 0, Convert.ToInt32(chunkSize)); 90 HttpContext.Current.Response.OutputStream.Write(buffer, 0, length); 91 HttpContext.Current.Response.Flush(); 92 HttpContext.Current.Response.Clear(); 93 dataToRead -= length; 94 } 95 else 96 { 97 dataToRead = -1; //防止client失去连接 98 } 99 } 100 } 101 catch (Exception ex) 102 { 103 HttpContext.Current.Response.Write("Error:" + ex.Message); 104 } 105 finally 106 { 107 if (stream != null) stream.Close(); 108 HttpContext.Current.Response.Close(); 109 } 110 } 111 112 /// <summary> 113 /// 输出硬盘文件,提供下载 支持大文件、续传、速度限制、资源占用小 114 /// </summary> 115 /// <param name="_Request">Page.Request对象</param> 116 /// <param name="_Response">Page.Response对象</param> 117 /// <param name="_fileName">下载文件名</param> 118 /// <param name="_fullPath">带文件名下载路径</param> 119 /// <param name="_speed">每秒允许下载的字节数</param> 120 /// <returns>返回是否成功</returns> 121 //--------------------------------------------------------------------- 122 //调用: 123 // string FullPath=Server.MapPath("count.txt"); 124 // ResponseFile(this.Request,this.Response,"count.txt",FullPath,100); 125 //--------------------------------------------------------------------- 126 public static bool ResponseFile(ControllerContext context, string _fileName, string _fullPath, long _speed) 127 { 128 HttpRequestBase _Request = context.HttpContext.Request; 129 HttpResponseBase _Response = context.HttpContext.Response; 130 try 131 { 132 133 FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 134 BinaryReader br = new BinaryReader(myFile); 135 try 136 { 137 _Response.AddHeader("Accept-Ranges", "bytes"); 138 _Response.Buffer = false; 139 140 long fileLength = myFile.Length; 141 long startBytes = 0; 142 int pack = 10240; //10K bytes 143 int sleep = (int)Math.Floor((double)(1000 * pack / _speed)) + 1; 144 145 if (_Request.Headers["Range"] != null) 146 { 147 _Response.StatusCode = 206; 148 string[] range = _Request.Headers["Range"].Split(new char[] { '=', '-' }); 149 startBytes = Convert.ToInt64(range[1]); 150 } 151 _Response.AddHeader("Content-Length", (fileLength - startBytes).ToString()); 152 if (startBytes != 0) 153 { 154 _Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength - 1, fileLength)); 155 } 156 157 _Response.AddHeader("Connection", "Keep-Alive"); 158 _Response.ContentType = "application/octet-stream"; 159 _Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(_fileName, System.Text.Encoding.UTF8)); 160 161 br.BaseStream.Seek(startBytes, SeekOrigin.Begin); 162 int maxCount = (int)Math.Floor((double)((fileLength - startBytes) / pack)) + 1; 163 164 for (int i = 0; i < maxCount; i++) 165 { 166 if (_Response.IsClientConnected) 167 { 168 _Response.BinaryWrite(br.ReadBytes(pack)); 169 Thread.Sleep(sleep); 170 } 171 else 172 { 173 i = maxCount; 174 } 175 } 176 } 177 catch 178 { 179 return false; 180 } 181 finally 182 { 183 br.Close(); 184 myFile.Close(); 185 } 186 } 187 catch 188 { 189 return false; 190 } 191 return true; 192 } 193 194 195 public static bool ResponseFile1(HttpRequest _Request, HttpResponse _Response, string _fileName, string _fullPath, long _speed) 196 { 197 try 198 { 199 200 FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 201 BinaryReader br = new BinaryReader(myFile); 202 try 203 { 204 _Response.AddHeader("Accept-Ranges", "bytes"); 205 _Response.Buffer = false; 206 207 long fileLength = myFile.Length; 208 long startBytes = 0; 209 int pack = 10240; //10K bytes 210 int sleep = (int)Math.Floor((double)(1000 * pack / _speed)) + 1; 211 212 if (_Request.Headers["Range"] != null) 213 { 214 _Response.StatusCode = 206; 215 string[] range = _Request.Headers["Range"].Split(new char[] { '=', '-' }); 216 startBytes = Convert.ToInt64(range[1]); 217 } 218 _Response.AddHeader("Content-Length", (fileLength - startBytes).ToString()); 219 if (startBytes != 0) 220 { 221 _Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength - 1, fileLength)); 222 } 223 224 _Response.AddHeader("Connection", "Keep-Alive"); 225 _Response.ContentType = "application/octet-stream"; 226 _Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(_fileName, System.Text.Encoding.UTF8)); 227 228 br.BaseStream.Seek(startBytes, SeekOrigin.Begin); 229 int maxCount = (int)Math.Floor((double)((fileLength - startBytes) / pack)) + 1; 230 231 for (int i = 0; i < maxCount; i++) 232 { 233 if (_Response.IsClientConnected) 234 { 235 _Response.BinaryWrite(br.ReadBytes(pack)); 236 Thread.Sleep(sleep); 237 } 238 else 239 { 240 i = maxCount; 241 } 242 } 243 } 244 catch 245 { 246 return false; 247 } 248 finally 249 { 250 br.Close(); 251 myFile.Close(); 252 } 253 } 254 catch 255 { 256 return false; 257 } 258 return true; 259 } 260 }
1 public class ImageHelper 2 { 3 /// <summary> 4 /// 生成缩略图 5 /// </summary> 6 /// <param name="orignPath">源图路径(绝对路径)</param> 7 /// <param name="thumbPath">缩略图路径(绝对路径)</param> 8 /// <param name="width">缩略图宽度</param> 9 /// <param name="height">缩略图高度</param> 10 /// <param name="mode">生成缩略图的方式</param> 11 public static void MakeThumbnailImage(string orignPath, string thumbPath, int width, int height, string mode) 12 { 13 var originalImage = Image.FromFile(orignPath); 14 int towidth = width; 15 int toheight = height; 16 17 int x = 0; 18 int y = 0; 19 int ow = originalImage.Width; 20 int oh = originalImage.Height; 21 switch (mode) 22 { 23 case "HW"://指定高宽缩放(可能变形) 24 break; 25 case "W"://指定宽,高按比例 26 toheight = originalImage.Height * width / originalImage.Width; 27 break; 28 case "H"://指定高,宽按比例 29 towidth = originalImage.Width * height / originalImage.Height; 30 break; 31 case "Cut"://指定高宽裁减(不变形) 32 if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight) 33 { 34 oh = originalImage.Height; 35 ow = originalImage.Height * towidth / toheight; 36 y = 0; 37 x = (originalImage.Width - ow) / 2; 38 } 39 else 40 { 41 ow = originalImage.Width; 42 oh = originalImage.Width * height / towidth; 43 x = 0; 44 y = (originalImage.Height - oh) / 2; 45 } 46 break; 47 } 48 49 //新建一个bmp图片 50 var b = new Bitmap(towidth, toheight); 51 try 52 { 53 //新建一个画板 54 var g = Graphics.FromImage(b); 55 //设置高质量插值法 56 g.InterpolationMode = InterpolationMode.HighQualityBicubic; 57 //设置高质量,低速度呈现平滑程度 58 g.SmoothingMode = SmoothingMode.AntiAlias; 59 g.PixelOffsetMode = PixelOffsetMode.HighQuality; 60 //清空画布并以透明背景色填充 61 g.Clear(Color.Transparent); 62 //在指定位置并且按指定大小绘制原图片的指定部分 63 g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight), new Rectangle(x, y, ow, oh), GraphicsUnit.Pixel); 64 //保存图像 65 b.Save(thumbPath); 66 } 67 finally 68 { 69 originalImage.Dispose(); 70 b.Dispose(); 71 } 72 } 73 }
1 /// <summary> 2 /// 常用IO操作类 3 /// </summary> 4 public class IOHelper 5 { 6 /// <summary> 7 /// 系统路径转换为web路径地址 8 /// </summary> 9 /// <param name="fullPath">文件完整地址</param> 10 /// <param name="AppPath">应用地址</param> 11 /// <param name="dHear">是否去掉首部的分隔符</param> 12 /// <returns></returns> 13 public static string WebPathParse(string fullPath,string appPath,bool dHear) 14 { 15 string sys = Path.DirectorySeparatorChar.ToString(); 16 string web = @"/";//web的分隔符 17 if (fullPath.StartsWith(appPath)) 18 { 19 string webPath = fullPath.Remove(0, appPath.Length); 20 webPath = webPath.Replace(sys, web); 21 if (webPath.StartsWith(web) == false) 22 { 23 webPath = web + webPath; 24 } 25 if (dHear) 26 { 27 webPath = IOHelper.RemoveHead(webPath, web); 28 } 29 return webPath; 30 } 31 else { 32 return ""; 33 } 34 } 35 /// <summary> 36 /// web路径地址转换为系统路径 37 /// </summary> 38 /// <param name="appPath">应用路径</param> 39 /// <param name="webPath">web路径</param> 40 /// <param name="dHear">是否去掉首部的路径分隔符</param> 41 /// <returns></returns> 42 public static string SysPathParse(string appPath, string webPath, bool dHear) 43 { 44 string sys = Path.DirectorySeparatorChar.ToString(); 45 string web = @"/";//web的分隔符 46 webPath = webPath.Replace(web, sys); 47 if (dHear) 48 { 49 webPath = IOHelper.RemoveHead(webPath, sys); 50 } 51 string result=""; 52 if (appPath.EndsWith(sys)) 53 { 54 if (webPath.StartsWith(sys)) 55 { 56 result = appPath + webPath.Remove(0,1); 57 } 58 else 59 { 60 result = appPath + webPath; 61 } 62 } 63 else { 64 if (webPath.StartsWith(sys)) 65 { 66 result = appPath + webPath; 67 } 68 else { 69 result = appPath + sys + webPath; 70 } 71 } 72 return result; 73 } 74 /// <summary> 75 /// 路径解析转换,转化成符合当前系统的路径符号 76 /// </summary> 77 /// <param name="path">路径</param> 78 /// <param name="flag">(路径的类型)1:windows 2:linux /(linux和web网页的分隔相符)</param> 79 /// <param name="dHear">是否去掉首部的路径分隔符</param> 80 /// <returns></returns> 81 public static string PathParse(string path, int flag, bool dHear) 82 { 83 string win = @""; 84 string linux = @"/"; 85 string sys=Path.DirectorySeparatorChar.ToString(); 86 if (flag == 1) 87 { 88 path = path.Replace(win, sys); 89 } 90 else if (flag == 2) 91 { 92 path = path.Replace(linux, sys); 93 } 94 if (dHear) { 95 path = IOHelper.RemoveHead(path, sys); 96 } 97 return path; 98 } 99 /// <summary> 100 /// (递归)去掉所有首部出现的字符串 101 /// </summary> 102 /// <param name="str">源字符串</param> 103 /// <param name="headStr">首部出现的字符串</param> 104 /// <returns></returns> 105 public static string RemoveHead(string str, string headStr) 106 { 107 if (str.StartsWith(headStr)) 108 { 109 str = str.Remove(0, headStr.Length); 110 return RemoveHead(str, headStr); 111 } 112 else { 113 return str; 114 } 115 } 116 117 /// <summary> 118 /// 返回指定目录下目录信息 119 /// </summary> 120 /// <param name="strDirectory">路径</param> 121 /// <returns></returns> 122 public static DirectoryInfo[] GetDirectory(string strDirectory) 123 { 124 if (string.IsNullOrEmpty(strDirectory) == false) 125 { 126 return new DirectoryInfo(strDirectory).GetDirectories(); 127 } 128 return new DirectoryInfo[] { }; 129 } 130 /// <summary> 131 /// 返回指定目录下所有文件信息 132 /// </summary> 133 /// <param name="strDirectory">路径</param> 134 /// <returns></returns> 135 public static FileInfo[] GetFiles(string strDirectory) 136 { 137 if (string.IsNullOrEmpty(strDirectory) == false) 138 { 139 return new DirectoryInfo(strDirectory).GetFiles(); 140 } 141 return new FileInfo[] { }; 142 } 143 /// <summary> 144 /// 返回指定目录下过滤文件信息 145 /// </summary> 146 /// <param name="strDirectory">目录地址</param> 147 /// <param name="filter"></param> 148 /// <returns></returns> 149 public static FileInfo[] GetFiles(string strDirectory, string filter) 150 { 151 if (string.IsNullOrEmpty(strDirectory) == false) 152 { 153 return new DirectoryInfo(strDirectory).GetFiles(filter, SearchOption.TopDirectoryOnly); 154 } 155 return new FileInfo[] { }; 156 } 157 public static void WriteDebug(Exception ex) 158 { 159 Debug.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); 160 Debug.WriteLine("Data:" + ex.Data + Environment.NewLine 161 + " InnerException:" + ex.InnerException + Environment.NewLine 162 + " Message:" + ex.Message + Environment.NewLine 163 + " Source:" + ex.Source + Environment.NewLine 164 + " StackTrace:" + ex.StackTrace + Environment.NewLine 165 + " TargetSite:" + ex.TargetSite); 166 } 167 /// <summary> 168 /// 控制台数据错误 169 /// </summary> 170 /// <param name="ex"></param> 171 public static void WriteConsole(Exception ex) 172 { 173 Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); 174 Console.WriteLine("Data:" + ex.Data + Environment.NewLine 175 + " InnerException:" + ex.InnerException + Environment.NewLine 176 + " Message:" + ex.Message + Environment.NewLine 177 + " Source:" + ex.Source + Environment.NewLine 178 + " StackTrace:" + ex.StackTrace + Environment.NewLine 179 + " TargetSite:" + ex.TargetSite); 180 } 181 /// <summary> 182 /// 错误记录 183 /// </summary> 184 /// <param name="ex"></param> 185 public static void WriteLog(Exception ex) 186 { 187 WriteLog(ex,null); 188 } 189 /// <summary> 190 /// 错误记录 191 /// </summary> 192 /// <param name="ex">错误信息</param> 193 /// <param name="appendInfo">追加信息</param> 194 public static void WriteLog(Exception ex, string appendInfo) { 195 if (string.IsNullOrEmpty(appendInfo)) 196 { 197 WriteLog("Data:" + ex.Data + Environment.NewLine 198 + " InnerException:" + ex.InnerException + Environment.NewLine 199 + " Message:" + ex.Message + Environment.NewLine 200 + " Source:" + ex.Source + Environment.NewLine 201 + " StackTrace:" + ex.StackTrace + Environment.NewLine 202 + " TargetSite:" + ex.TargetSite); 203 } 204 else { 205 WriteLog("Data:" + ex.Data + Environment.NewLine 206 + " InnerException:" + ex.InnerException + Environment.NewLine 207 + " Message:" + ex.Message + Environment.NewLine 208 + " Source:" + ex.Source + Environment.NewLine 209 + " StackTrace:" + ex.StackTrace + Environment.NewLine 210 + " TargetSite:" + ex.TargetSite + Environment.NewLine 211 + " appendInfo:" + appendInfo); 212 } 213 } 214 /// <summary> 215 /// 写log 216 /// </summary> 217 /// <param name="InfoStr"></param> 218 public static void WriteLog(string InfoStr) 219 { 220 WriteLog(InfoStr, AppDomain.CurrentDomain.BaseDirectory + Path.DirectorySeparatorChar + "Log"); 221 } 222 /// <summary> 223 /// 写log(自动时间log) 224 /// </summary> 225 /// <param name="InfoStr">内容</param> 226 /// <param name="FilePath">目录地址</param> 227 public static void WriteLog(string InfoStr, string DirPath) 228 { 229 WriteLog(InfoStr, DirPath, Encoding.UTF8); 230 } 231 /// <summary> 232 /// 写log(自动时间log) 233 /// </summary> 234 /// <param name="InfoStr">内容</param> 235 /// <param name="DirPath">目录地址</param> 236 /// <param name="encoding">编码</param> 237 public static void WriteLog(string InfoStr, string DirPath, Encoding encoding) 238 { 239 FileStream stream = null; 240 System.IO.StreamWriter writer = null; 241 try 242 { 243 string logPath = DirPath; 244 if (Directory.Exists(logPath) == false) 245 { 246 Directory.CreateDirectory(logPath); 247 } 248 string filepath = logPath + Path.DirectorySeparatorChar + "log_" + DateTime.Now.ToString("yyyyMMddHH") + ".txt"; 249 if (File.Exists(filepath) == false) 250 { 251 stream = new FileStream(filepath, FileMode.CreateNew, FileAccess.Write, FileShare.ReadWrite); 252 } 253 else 254 { 255 stream = new FileStream(filepath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite); 256 } 257 writer = new System.IO.StreamWriter(stream, encoding); 258 writer.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); 259 writer.WriteLine(InfoStr); 260 writer.WriteLine(""); 261 } 262 finally 263 { 264 if (writer != null) 265 { 266 //writer.Close(); 267 writer.Dispose(); 268 } 269 //if (stream != null) 270 //{ 271 // //stream.Close(); 272 // stream.Dispose(); 273 //} 274 } 275 } 276 277 /// <summary> 278 /// 写log到指定文件(不存在就创建) 279 /// </summary> 280 /// <param name="InfoStr">内容</param> 281 /// <param name="FilePath">文件地址</param> 282 public static void WriteLogToFile(string InfoStr, string FilePath) 283 { 284 WriteLogToFile(InfoStr, FilePath,Encoding.UTF8); 285 } 286 /// <summary> 287 /// 写log到指定文件(不存在就创建) 288 /// </summary> 289 /// <param name="InfoStr">内容</param> 290 /// <param name="FilePath">文件地址</param> 291 /// <param name="encoding">编码</param> 292 public static void WriteLogToFile(string InfoStr, string FilePath, Encoding encoding) 293 { 294 FileStream stream = null; 295 System.IO.StreamWriter writer = null; 296 try 297 { 298 string logPath = FilePath; 299 if (File.Exists(logPath) == false) 300 { 301 stream = new FileStream(logPath, FileMode.CreateNew, FileAccess.Write, FileShare.ReadWrite); 302 } 303 else 304 { 305 stream = new FileStream(logPath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite); 306 } 307 308 writer = new System.IO.StreamWriter(stream, encoding); 309 writer.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); 310 writer.WriteLine(InfoStr); 311 writer.WriteLine(""); 312 } 313 finally 314 { 315 if (writer != null) 316 { 317 //writer.Close(); 318 writer.Dispose(); 319 } 320 //if (stream != null) 321 //{ 322 // //stream.Close(); 323 // stream.Dispose(); 324 //} 325 } 326 } 327 /// <summary> 328 /// 写内容到指定文件(不存在就创建) 329 /// </summary> 330 /// <param name="InfoStr">内容</param> 331 /// <param name="FilePath">文件地址</param> 332 /// <param name="encoding">编码</param> 333 /// <param name="append">是否追加</param> 334 public static void WriteInfoToFile(string InfoStr, string FilePath, Encoding encoding,bool append) 335 { 336 FileStream stream = null; 337 System.IO.StreamWriter writer = null; 338 try 339 { 340 string logPath = FilePath; 341 if (File.Exists(logPath) == false) 342 { 343 stream = new FileStream(logPath, FileMode.CreateNew, FileAccess.Write, FileShare.ReadWrite); 344 writer = new System.IO.StreamWriter(stream, encoding); 345 } 346 else 347 { 348 //存在就覆盖 349 writer = new System.IO.StreamWriter(logPath, append, encoding); 350 } 351 writer.Write(InfoStr); 352 } 353 finally 354 { 355 if (writer != null) 356 { 357 //writer.Close(); 358 writer.Dispose(); 359 } 360 //if (stream != null) 361 //{ 362 // //stream.Close(); 363 // stream.Dispose(); 364 //} 365 } 366 } 367 368 public static void AsyncWriteLog(byte[] datagram, string FilePath, AsyncCallback callback, int numBytes) 369 { 370 FileStream stream = null; 371 try 372 { 373 string logPath = FilePath; 374 if (File.Exists(logPath) == false) 375 { 376 stream = new FileStream(logPath, FileMode.CreateNew, FileAccess.Write, FileShare.ReadWrite); 377 } 378 else 379 { 380 stream = new FileStream(logPath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite); 381 } 382 383 if (stream.CanWrite) 384 { 385 386 stream.BeginWrite(datagram, 0, numBytes, callback, "AsyncWriteLog_" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); 387 } 388 else 389 { 390 throw new Exception("文件无法写入,文件或只读!"); 391 } 392 } 393 finally 394 { 395 if (stream != null) 396 { 397 //stream.Close(); 398 stream.Dispose(); 399 } 400 } 401 } 402 403 public static void AsyncWriteLog(byte[] datagram, string FilePath, int numBytes) 404 { 405 AsyncWriteLog(datagram, FilePath, new AsyncCallback(AsyncCallbackFunc), numBytes); 406 } 407 public static void AsyncCallbackFunc(IAsyncResult result) 408 { 409 FileStream filestream = result.AsyncState as FileStream; 410 filestream.EndWrite(result); 411 filestream.Close(); 412 } 413 414 /// <summary> 415 /// 文本转义(方便讲文本转换成C#变量代码) 416 /// 例子 " 转化成 string str="""; 417 /// </summary> 418 /// <param name="str"></param> 419 /// <returns></returns> 420 public static string ToEscape(string str, string m_var) 421 { 422 /* 423 " " 424 \ 425 */ 426 str = str.Trim(); 427 str = str.Replace("\", "\\"); 428 str = str.Replace(""", "\""); 429 return "string " + m_var + "="" + str + "";"; 430 } 431 /// <summary> 432 /// 读取Appliction目录下的文件 433 /// </summary> 434 /// <param name="filePath"></param> 435 /// <param name="enc"></param> 436 /// <returns></returns> 437 public static string AppReadTxt(string filePath, Encoding enc) 438 { 439 FileStream stream = null; 440 System.IO.StreamReader reader = null; 441 string result = ""; 442 try 443 { 444 string appPath = AppDomain.CurrentDomain.BaseDirectory; 445 string path = appPath + filePath; 446 if (File.Exists(path) == false) 447 { 448 stream = new FileStream(path, FileMode.CreateNew, FileAccess.Read, FileShare.ReadWrite); 449 } 450 else 451 { 452 stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); 453 } 454 reader = new System.IO.StreamReader(stream, enc); 455 result =reader.ReadToEnd(); 456 } 457 catch (Exception e) 458 { 459 WriteLog(e); 460 } 461 finally 462 { 463 if (reader != null) 464 { 465 //reader.Close(); 466 reader.Dispose(); 467 } 468 //if (stream != null) 469 //{ 470 // //stream.Close(); 471 // stream.Dispose(); 472 //} 473 } 474 return result; 475 } 476 /// <summary> 477 /// 读取Appliction目录下的文件(UTF-8) 478 /// </summary> 479 /// <param name="filePath"></param> 480 /// <returns></returns> 481 public static string AppReadTxt(string filePath) 482 { 483 return AppReadTxt(filePath, System.Text.Encoding.UTF8); 484 } 485 }
1 /// <summary> 2 /// Json操作 3 /// </summary> 4 public static class Json 5 { 6 public static object ToJson(this string Json) 7 { 8 return Json == null ? null : JsonConvert.DeserializeObject(Json); 9 } 10 public static string ToJson(this object obj) 11 { 12 var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" }; 13 return JsonConvert.SerializeObject(obj, timeConverter); 14 } 15 public static string ToJson(this object obj, string datetimeformats) 16 { 17 var timeConverter = new IsoDateTimeConverter { DateTimeFormat = datetimeformats }; 18 return JsonConvert.SerializeObject(obj, timeConverter); 19 } 20 public static T ToObject<T>(this string Json) 21 { 22 return Json == null ? default(T) : JsonConvert.DeserializeObject<T>(Json); 23 } 24 public static List<T> ToList<T>(this string Json) 25 { 26 return Json == null ? null : JsonConvert.DeserializeObject<List<T>>(Json); 27 } 28 public static DataTable ToTable(this string Json) 29 { 30 return Json == null ? null : JsonConvert.DeserializeObject<DataTable>(Json); 31 } 32 public static JObject ToJObject(this string Json) 33 { 34 return Json == null ? JObject.Parse("{}") : JObject.Parse(Json.Replace(" ", "")); 35 } 36 }
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Runtime.InteropServices; 5 using System.Text; 6 using log4net; 7 8 9 10 //注意下面的语句一定要加上,指定log4net使用.config文件来读取配置信息(注入Log4Net配置信息,Log4Net的核心就在此) 11 [assembly: log4net.Config.XmlConfigurator(Watch = true)] 12 namespace OAMS.Common 13 { 14 public class LogHelper 15 { 16 #region 错误级别(目前只用这个) 17 /// <summary> 18 /// 错误日志 19 /// </summary> 20 /// <param name="t">注册类型,一般是异常所在类,也可以是异常本身类型</param> 21 /// <param name="ex">异常对象</param> 22 /// <param name="message">自定义消息(可选)</param> 23 public static void WriteErrorLog(Type t, Exception ex,params string[] message) 24 { 25 if (message.Length > 0) 26 { 27 ILog log = LogManager.GetLogger(t); 28 log.Error(message,ex); 29 } 30 else 31 { 32 ILog log = LogManager.GetLogger(t); 33 log.Error(ex); 34 } 35 } 36 37 /// <summary> 38 /// 错误日志 39 /// </summary> 40 public static void WriteErrorLog(Type t, string error) 41 { 42 ILog log = LogManager.GetLogger(t); 43 log.Error(error); 44 } 45 #endregion 46 47 #region 严重错误级别 48 /// <summary> 49 /// 严重错误日志 50 /// </summary> 51 public static void WriteFatalLog(Type t, Exception ex) 52 { 53 ILog log = LogManager.GetLogger(t); 54 log.Fatal(ex); 55 } 56 57 /// <summary> 58 /// 严重错误日志 59 /// </summary> 60 public static void WriteFatalLog(Type t, string fatal) 61 { 62 ILog log = LogManager.GetLogger(t); 63 log.Fatal(fatal); 64 } 65 #endregion 66 67 #region 信息级别 68 /// <summary> 69 /// 信息日志 70 /// </summary> 71 public static void WriteInfoLog(Type t, Exception ex) 72 { 73 ILog log = LogManager.GetLogger(t); 74 log.Info(ex); 75 } 76 77 /// <summary> 78 /// 信息日志 79 /// </summary> 80 public static void WriteInfoLog(Type t, string info) 81 { 82 ILog log = LogManager.GetLogger(t); 83 log.Info(info); 84 } 85 #endregion 86 87 #region 调试级别 88 /// <summary> 89 /// 调试日志 90 /// </summary> 91 public static void WriteDebugLog(Type t, Exception ex) 92 { 93 ILog log = LogManager.GetLogger(t); 94 log.Debug(ex); 95 } 96 97 /// <summary> 98 /// 调试日志 99 /// </summary> 100 public static void WriteDebugLog(Type t, string debug) 101 { 102 ILog log = LogManager.GetLogger(t); 103 log.Debug(debug); 104 } 105 #endregion 106 107 #region 警告级别 108 /// <summary> 109 /// 警告日志 110 /// </summary> 111 public static void WriteWarnLog(Type t, Exception ex) 112 { 113 ILog log = LogManager.GetLogger(t); 114 log.Warn(ex); 115 } 116 117 /// <summary> 118 /// 警告日志 119 /// </summary> 120 public static void WriteWarnLog(Type t, string warn) 121 { 122 ILog log = LogManager.GetLogger(t); 123 log.Warn(warn); 124 } 125 #endregion 126 127 } 128 }
1 public class StringHelper 2 { 3 /// <summary> 4 /// 获取Guid字符串值 5 /// </summary> 6 /// <returns></returns> 7 public static string GetGuidString() 8 { 9 /* 10 * Guid.NewGuid().ToString("N") 结果为: 11 38bddf48f43c48588e0d78761eaa1ce6 12 Guid.NewGuid().ToString("D") 结果为: 13 57d99d89-caab-482a-a0e9-a0a803eed3ba 14 Guid.NewGuid().ToString("B") 结果为: 15 {09f140d5-af72-44ba-a763-c861304b46f8} 16 Guid.NewGuid().ToString("P") 结果为: 17 (778406c2-efff-4262-ab03-70a77d09c2b5) 18 */ 19 return Guid.NewGuid().ToString("N"); 20 } 21 22 23 24 /// <summary> 25 /// 把字符串按照指定分隔符装成 List 去除重复 26 /// </summary> 27 /// <param name="oStr"></param> 28 /// <param name="sepeater"></param> 29 /// <returns></returns> 30 public static List<string> GetSubStringList(string oStr, char sepeater) 31 { 32 var ss = oStr.Split(sepeater); 33 return ss.Where(s => !string.IsNullOrEmpty(s) && s != sepeater.ToString(CultureInfo.InvariantCulture)).ToList(); 34 } 35 36 /// <summary> 37 /// 得到字符串长度,一个汉字长度为2 38 /// </summary> 39 /// <param name="inputString">参数字符串</param> 40 /// <returns></returns> 41 public static int StrLength(string inputString) 42 { 43 var ascii = new ASCIIEncoding(); 44 var tempLen = 0; 45 var s = ascii.GetBytes(inputString); 46 foreach (var t in s) 47 { 48 if (t == 63) 49 tempLen += 2; 50 else 51 tempLen += 1; 52 } 53 return tempLen; 54 } 55 56 /// <summary> 57 /// 截取指定长度字符串 58 /// </summary> 59 /// <param name="inputString">要处理的字符串</param> 60 /// <param name="len">指定长度</param> 61 /// <returns>返回处理后的字符串</returns> 62 public static string CutString(string inputString, int len) 63 { 64 var isShowFix = false; 65 if (len % 2 == 1) 66 { 67 isShowFix = true; 68 len--; 69 } 70 var ascii = new ASCIIEncoding(); 71 var tempLen = 0; 72 var tempString = ""; 73 var s = ascii.GetBytes(inputString); 74 for (var i = 0; i < s.Length; i++) 75 { 76 if (s[i] == 63) 77 tempLen += 2; 78 else 79 tempLen += 1; 80 81 try 82 { 83 tempString += inputString.Substring(i, 1); 84 } 85 catch 86 { 87 break; 88 } 89 90 if (tempLen > len) 91 break; 92 } 93 94 var mybyte = Encoding.Default.GetBytes(inputString); 95 if (isShowFix && mybyte.Length > len) 96 tempString += "…"; 97 return tempString; 98 } 99 100 /// <summary> 101 /// 删除字符串结尾的指定字符后的字符 102 /// </summary> 103 public static string DelLastChar(string str, string strchar) 104 { 105 return str.Substring(0, str.LastIndexOf(strchar, StringComparison.Ordinal)); 106 } 107 108 /// <summary> 109 /// 生成指定长度随机字符串(默认为6) 110 /// </summary> 111 /// <param name="codeCount"></param> 112 /// <returns></returns> 113 public static string GetRandomString(int codeCount = 6) 114 { 115 var str = string.Empty; 116 var rep = 0; 117 var num2 = DateTime.Now.Ticks + rep; 118 rep++; 119 var random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> rep))); 120 for (var i = 0; i < codeCount; i++) 121 { 122 char ch; 123 var num = random.Next(); 124 if ((num % 2) == 0) 125 { 126 ch = (char)(0x30 + ((ushort)(num % 10))); 127 } 128 else 129 { 130 ch = (char)(0x41 + ((ushort)(num % 0x1a))); 131 } 132 str = str + ch; 133 } 134 return str; 135 } 136 137 /// <summary> 138 /// 获取时间戳 139 /// </summary> 140 /// <returns></returns> 141 public static string GetTimeStamp() 142 { 143 TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0); 144 return Convert.ToInt64(ts.TotalSeconds).ToString(); 145 } 146 /// <summary> 147 /// 过滤html 148 /// </summary> 149 /// <param name="HTMLStr"></param> 150 /// <returns></returns> 151 public static string FilterHTML(string HTMLStr) 152 { 153 if (!string.IsNullOrEmpty(HTMLStr)) 154 return System.Text.RegularExpressions.Regex.Replace(HTMLStr, "<[^>]*>| ", ""); 155 else 156 return ""; 157 } 158 }
1 public static class DataHelper 2 { 3 /// <summary> 4 /// js 序列化器 5 /// </summary> 6 static JavaScriptSerializer jss = new JavaScriptSerializer(); 7 8 /// <summary> 9 /// 将 对象 转成 json格式字符串 10 /// </summary> 11 /// <param name="obj"></param> 12 /// <returns></returns> 13 public static string Obj2Json(object obj) 14 { 15 //把集合 转成 json 数组格式字符串 16 return jss.Serialize(obj); 17 } 18 19 20 public static string ConvertTime(TimeSpan ts) 21 { 22 if (ts.TotalDays >= 365) 23 { 24 return Math.Floor(ts.TotalDays / 365) + "年前"; 25 } 26 else if (ts.TotalDays >= 30) 27 { 28 return Math.Floor(ts.TotalDays / 30) + "月前"; 29 } 30 else if (ts.TotalDays >= 1) 31 { 32 return Math.Floor(ts.TotalDays) + "天前"; 33 } 34 else if (ts.TotalHours >= 1) 35 { 36 return Math.Floor(ts.TotalHours) + "小时前"; 37 } 38 else if (ts.TotalMinutes >= 1) 39 { 40 return Math.Floor(ts.TotalHours) + "分钟前"; 41 } 42 else 43 { 44 return "刚刚"; 45 } 46 } 47 48 public static void SendEmail(string toEmail, string subject, string body) 49 { 50 string SmtpFrom = ConfigurationManager.AppSettings["SmtpFrom"]; 51 string SmtpSever = ConfigurationManager.AppSettings["SmtpSever"]; 52 string SmtpSeverPwd = ConfigurationManager.AppSettings["SmtpSeverPwd"]; 53 string SmtpUserName = ConfigurationManager.AppSettings["SmtpUserName"]; 54 55 System.Net.Mail.MailMessage mailObj = new System.Net.Mail.MailMessage(); 56 mailObj.From = new MailAddress(SmtpFrom); //发送人邮箱地址 57 mailObj.To.Add(toEmail); //收件人邮箱地址 58 mailObj.Subject = subject; //主题 59 mailObj.Body = body; //正文 60 mailObj.IsBodyHtml = true; 61 SmtpClient smtp = new SmtpClient(); 62 smtp.Host = SmtpSever; //smtp服务器名称 63 smtp.UseDefaultCredentials = true; 64 smtp.Credentials = new NetworkCredential(SmtpUserName, SmtpSeverPwd); //发送人的登录名和密码 65 smtp.Send(mailObj); 66 } 67 68 public static string SendMessage() 69 { 70 string ret = null; 71 72 CCPRestSDK.CCPRestSDK api = new CCPRestSDK.CCPRestSDK(); 73 //ip格式如下,不带https:// 74 bool isInit = api.init("app.cloopen.com", "8883"); 75 api.setAccount("8a216da862a4b4880162a58dc448007a", "16b1bc67b9814d718dd0a54ed6015296"); 76 api.setAppId("8a216da862a4b4880162a5931fc20083"); 77 Random rd = new Random(); 78 int num = rd.Next(100000, 1000000); 79 string result = ""; 80 try 81 { 82 if (isInit) 83 { 84 Dictionary<string, object> retData = api.SendTemplateSMS("18437963713", "1", new string[] { num.ToString(), "30" }); 85 ret = getDictionaryData(retData); 86 result = num.ToString(); 87 88 } 89 else 90 { 91 ret = "初始化失败"; 92 result = "失败"; 93 } 94 } 95 catch (Exception exc) 96 { 97 ret = exc.Message; 98 result = "失败"; 99 100 } 101 return result; 102 103 } 104 105 private static string getDictionaryData(Dictionary<string, object> data) 106 { 107 string ret = null; 108 foreach (KeyValuePair<string, object> item in data) 109 { 110 if (item.Value != null && item.Value.GetType() == typeof(Dictionary<string, object>)) 111 { 112 ret += item.Key.ToString() + "={"; 113 ret += getDictionaryData((Dictionary<string, object>)item.Value); 114 ret += "};"; 115 } 116 else 117 { 118 ret += item.Key.ToString() + "=" + (item.Value == null ? "null" : item.Value.ToString()) + ";"; 119 } 120 } 121 return ret; 122 } 123 124 125 }
1 public class MemcacheHelper 2 { 3 private static readonly MemcachedClient mc = null; 4 static MemcacheHelper() 5 { 6 //最好放在配置文件中 7 string[] serverlist = { "127.0.0.1:11211", "10.0.0.132:11211" }; 8 //初始化池 9 SockIOPool pool = SockIOPool.GetInstance(); 10 pool.SetServers(serverlist); 11 12 pool.InitConnections = 3; 13 pool.MinConnections = 3; 14 pool.MaxConnections = 5; 15 16 pool.SocketConnectTimeout = 1000; 17 pool.SocketTimeout = 3000; 18 19 pool.MaintenanceSleep = 30; 20 pool.Failover = true; 21 22 pool.Nagle = false; 23 pool.Initialize(); 24 25 // 获得客户端实例 26 mc = new MemcachedClient(); 27 mc.EnableCompression = false; 28 } 29 30 /// <summary> 31 /// 存储数据 32 /// </summary> 33 /// <param name="key"></param> 34 /// <param name="value"></param> 35 /// <returns></returns> 36 public static bool Set(string key, object value) 37 { 38 return mc.Set(key, value); 39 } 40 public static bool Set(string key, object value, DateTime time) 41 { 42 return mc.Set(key, value, time); 43 } 44 /// <summary> 45 /// 获取数据 46 /// </summary> 47 /// <param name="key"></param> 48 /// <returns></returns> 49 public static object Get(string key) 50 { 51 return mc.Get(key); 52 } 53 /// <summary> 54 /// 删除 55 /// </summary> 56 /// <param name="key"></param> 57 /// <returns></returns> 58 public static bool Delete(string key) 59 { 60 if (mc.KeyExists(key)) 61 { 62 return mc.Delete(key); 63 64 } 65 return false; 66 67 } 68 }
1 public class SerializeHelper 2 { 3 /// <summary> 4 /// 对数据进行序列化 5 /// </summary> 6 /// <param name="value"></param> 7 /// <returns></returns> 8 public static string SerializeToString(object value) 9 { 10 return JsonConvert.SerializeObject(value); 11 } 12 /// <summary> 13 /// 反序列化操作 14 /// </summary> 15 /// <typeparam name="T"></typeparam> 16 /// <param name="str"></param> 17 /// <returns></returns> 18 public static T DeserializeToObject<T>(string str) 19 { 20 return JsonConvert.DeserializeObject<T>(str); 21 } 22 }
1 public class ValidateCode 2 { 3 public ValidateCode() 4 { 5 } 6 /// <summary> 7 /// 验证码的最大长度 8 /// </summary> 9 public int MaxLength 10 { 11 get { return 10; } 12 } 13 /// <summary> 14 /// 验证码的最小长度 15 /// </summary> 16 public int MinLength 17 { 18 get { return 1; } 19 } 20 21 /// <summary> 22 /// 生成验证码 23 /// </summary> 24 /// <param name="length">指定验证码的长度</param> 25 /// <returns></returns> 26 public string CreateValidateCode(int length) 27 { 28 int[] randMembers = new int[length]; 29 int[] validateNums = new int[length]; 30 string validateNumberStr = ""; 31 //生成起始序列值 32 int seekSeek = unchecked((int)DateTime.Now.Ticks); 33 Random seekRand = new Random(seekSeek); 34 int beginSeek = (int)seekRand.Next(0, Int32.MaxValue - length * 10000); 35 int[] seeks = new int[length]; 36 for (int i = 0; i < length; i++) 37 { 38 beginSeek += 10000; 39 seeks[i] = beginSeek; 40 } 41 //生成随机数字 42 for (int i = 0; i < length; i++) 43 { 44 Random rand = new Random(seeks[i]); 45 int pownum = 1 * (int)Math.Pow(10, length); 46 randMembers[i] = rand.Next(pownum, Int32.MaxValue); 47 } 48 //抽取随机数字 49 for (int i = 0; i < length; i++) 50 { 51 string numStr = randMembers[i].ToString(); 52 int numLength = numStr.Length; 53 Random rand = new Random(); 54 int numPosition = rand.Next(0, numLength - 1); 55 validateNums[i] = Int32.Parse(numStr.Substring(numPosition, 1)); 56 } 57 //生成验证码 58 for (int i = 0; i < length; i++) 59 { 60 validateNumberStr += validateNums[i].ToString(); 61 } 62 return validateNumberStr; 63 } 64 65 /// <summary> 66 /// 创建验证码的图片 67 /// </summary> 68 /// <param name="context">要输出到的page对象</param> 69 /// <param name="validateNum">验证码</param> 70 public void CreateValidateGraphic(string validateCode, HttpContext context) 71 { 72 Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 12.0), 22); 73 Graphics g = Graphics.FromImage(image); 74 try 75 { 76 //生成随机生成器 77 Random random = new Random(); 78 //清空图片背景色 79 g.Clear(Color.White); 80 //画图片的干扰线 81 for (int i = 0; i < 25; i++) 82 { 83 int x1 = random.Next(image.Width); 84 int x2 = random.Next(image.Width); 85 int y1 = random.Next(image.Height); 86 int y2 = random.Next(image.Height); 87 g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); 88 } 89 Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic)); 90 LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), 91 Color.Blue, Color.DarkRed, 1.2f, true); 92 g.DrawString(validateCode, font, brush, 3, 2); 93 //画图片的前景干扰点 94 for (int i = 0; i < 100; i++) 95 { 96 int x = random.Next(image.Width); 97 int y = random.Next(image.Height); 98 image.SetPixel(x, y, Color.FromArgb(random.Next())); 99 } 100 //画图片的边框线 101 g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); 102 //保存图片数据 103 MemoryStream stream = new MemoryStream(); 104 image.Save(stream, ImageFormat.Jpeg); 105 //输出图片流 106 context.Response.Clear(); 107 context.Response.ContentType = "image/jpeg"; 108 context.Response.BinaryWrite(stream.ToArray()); 109 } 110 finally 111 { 112 g.Dispose(); 113 image.Dispose(); 114 } 115 } 116 117 /// <summary> 118 /// 得到验证码图片的长度 119 /// </summary> 120 /// <param name="validateNumLength">验证码的长度</param> 121 /// <returns></returns> 122 public static int GetImageWidth(int validateNumLength) 123 { 124 return (int)(validateNumLength * 12.0); 125 } 126 /// <summary> 127 /// 得到验证码的高度 128 /// </summary> 129 /// <returns></returns> 130 public static double GetImageHeight() 131 { 132 return 22.5; 133 } 134 135 136 137 //C# MVC 升级版 138 /// <summary> 139 /// 创建验证码的图片 140 /// </summary> 141 /// <param name="containsPage">要输出到的page对象</param> 142 /// <param name="validateNum">验证码</param> 143 public byte[] CreateValidateGraphic(string validateCode) 144 { 145 Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 12.0), 22); 146 Graphics g = Graphics.FromImage(image); 147 try 148 { 149 //生成随机生成器 150 Random random = new Random(); 151 //清空图片背景色 152 g.Clear(Color.White); 153 //画图片的干扰线 154 for (int i = 0; i < 25; i++) 155 { 156 int x1 = random.Next(image.Width); 157 int x2 = random.Next(image.Width); 158 int y1 = random.Next(image.Height); 159 int y2 = random.Next(image.Height); 160 g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); 161 } 162 Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic)); 163 LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), 164 Color.Blue, Color.DarkRed, 1.2f, true); 165 g.DrawString(validateCode, font, brush, 3, 2); 166 //画图片的前景干扰点 167 for (int i = 0; i < 100; i++) 168 { 169 int x = random.Next(image.Width); 170 int y = random.Next(image.Height); 171 image.SetPixel(x, y, Color.FromArgb(random.Next())); 172 } 173 //画图片的边框线 174 g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); 175 //保存图片数据 176 MemoryStream stream = new MemoryStream(); 177 image.Save(stream, ImageFormat.Jpeg); 178 //输出图片流 179 return stream.ToArray(); 180 } 181 finally 182 { 183 g.Dispose(); 184 image.Dispose(); 185 } 186 } 187 188 }