using System; using System.Collections.Generic; using System.Text; using System.Web; using System.Web.UI; using System.IO; using System.Drawing; using System.Drawing.Imaging; using System.Security.Cryptography; using System.Net; using System.Web.UI.WebControls; using System.Text.RegularExpressions; using System.Web.Mail; using System.Collections; using System.Data;using System.Web.UI.HtmlControls; using System.Data.SqlClient; namespace PubClass { public class PubFunction { #region MD5加密 public string MD5(string DataStr) { return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(DataStr, "md5"); } public string MD5_16(string DataStr) { string md5str = this.MD5(DataStr); return md5str.Substring(8, 16); } #endregion #region 随机字串 /// <summary> /// 生成指定长度的随机字串 /// </summary> /// <param name="len">长度</param> /// <returns>随机字串</returns> public string GetRandomizedString(int len) { return this.GetRandomizedString(len, "all"); } /// <summary> /// 生成指定长度的随机字串 /// </summary> /// <param name="len">长度</param> /// <param name="codes">字串取值范围</param> /// <returns>随机字串</returns> public string GetRandomizedString(int len, string codes) { string series; switch (codes) { case "number": series = "01234567890123456789"; break; case "lower": series = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"; break; case "upper": series = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ"; break; case "alpha": series = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"; break; default: series = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"; break; } if (len < 1) return ""; int olen = series.Length; StringBuilder sb = new StringBuilder(); Random rnd = new Random(); for (int i = 0; i < len; i++) { sb.Append(series.Substring(rnd.Next(0, olen - 1), 1)); } return sb.ToString(); } #endregion #region 删除特定字符 /// <summary> /// 清除字符串的非数字、字母(含下划线)和汉字字符 /// </summary> /// <param name="txt">传入参数</param> /// <returns>结果字串</returns> public string delNonePassportAllowChar(string txt) { System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("[\x00-\x2F\x3A-\x40\x5B-\x5E\x60\x7B-\xFF]"); return reg.Replace(txt, ""); } public bool hasIllegalPassportChar(string txt) { System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("[\x00-\x2F\x3A-\x40\x5B-\x5E\x60\x7B-\xFF]{1,}"); return reg.IsMatch(txt); } public string onlyAlphaAndDigit(string txt) { System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("[^a-zA-Z0-9]"); return reg.Replace(txt, ""); } public bool hasNoneAlphaAndDigit(string txt) { System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("[^a-zA-Z0-9]{1,}"); return reg.IsMatch(txt); } #endregion #region 返回文件扩展名 /// <summary> /// 返回文件扩展名 /// </summary> /// <param name="filename">文件名</param> /// <returns>小写扩展名</returns> public string getFileExt(string filename) { int lidx = filename.LastIndexOf("."); if (lidx == filename.Length - 1) return ""; string ext = ""; if (lidx > -1) { ext = filename.Substring(lidx + 1).ToLower(); } return ext; } #endregion #region 截字处理(按字节算) /// <summary> /// 截字处理(按字节算) /// </summary> /// <param name="str">原始字串</param> /// <param name="len">字节长度</param> /// <returns>结果字串</returns> public string SubStringByByte(string str, int len) { char[] cc = str.ToCharArray(); int i = 0, j = 0, code; for (i = 0, j = 0; i < cc.Length && j < len; i++) { code = (int)cc[i]; if (code >= 0 && code <= 255) { j++; } else { j += 2; } } if (i > 0) { return str.Substring(0, i); } else { return ""; } } public string SubStringByByte(string str, int len, bool ismore) { char[] cc = str.ToCharArray(); int i = 0, j = 0, code; for (i = 0, j = 0; i < cc.Length && j < len; i++) { code = (int)cc[i]; if (code >= 0 && code <= 255) { j++; } else { j += 2; } } if (i > 0) { if (!IsBlank(str)) { if (CalcByteLength(str) > len) { return str.Substring(0, i) + ".."; } else { return str.Substring(0, i); } } else { return str.Substring(0, i); } } else { return ""; } } /// <summary> /// 返回字节长度 /// </summary> /// <param name="str">计算字串</param> /// <returns>长度</returns> public int CalcByteLength(string str) { char[] cc = str.ToCharArray(); int i = 0, j = 0, code; for (i = 0, j = 0; i < cc.Length; i++) { code = (int)cc[i]; if (code >= 0 && code <= 255) { j++; } else { j += 2; } } return j; } #endregion #region 检测字串是否是电子邮件地址格式 /// <summary> /// 检测字串是否是电子邮件地址格式 /// </summary> /// <param name="email">需要检测的电子邮件地址字串</param> /// <returns>是否是电子邮件地址格式</returns> public bool IsEmail(string email) { System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"); return reg.IsMatch(email); } #endregion #region 正则匹配检测 /// <summary> /// 正则匹配检测 /// </summary> /// <param name="txt">需要检测的字串</param> /// <param name="reg">正则表达式</param> /// <returns>结果</returns> public bool RegIsMatch(string txt, string reg) { System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(reg); return regex.IsMatch(txt); } #endregion #region 获取字符串字节数 public int GetStringByteLength(string str) { char[] cc = str.ToCharArray(); int i = 0, j = 0, code; for (i = 0, j = 0; i < cc.Length; i++) { code = (int)cc[i]; if (code >= 0 && code <= 255) { j++; } else { j += 2; } } return j; } #endregion #region 生成以日期时间为基础的不重复数字字串 private Random rnd = new Random(); /// <summary> /// 生成以日期时间为基础的不重复数字字串 /// </summary> /// <returns>字串</returns> public string getIdenticalStringBaseDateTime() { return DateTime.Now.ToString("yyMMddHHmm") + rnd.Next(1000, 9999).ToString(); } /// <summary> /// 生成以日期时间为基础的不重复数字字串 /// </summary> /// <returns>字串</returns> public string getIdenticalStringBaseDateTime2() { return DateTime.Now.ToString("yyMMddHHmmss") + rnd.Next(10000, 99999).ToString(); } #endregion #region 生成以日期时间为基的SHA1加密字串 /// <summary> /// 生成以日期时间为基的SHA1加密字串 /// </summary> /// <returns>40位的加密字串</returns> public string GetSHA1StringBasedDateTime() { string source = DateTime.Now.ToString("yyyyMMddHHss") + rnd.Next(10000, 99999).ToString(); return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(source, "sha1"); } #endregion #region 表单处理 /// <summary> /// 表单处理 /// </summary> /// <param name="str">处理字串</param> /// <returns>结果字串</returns> public string TextareaStringToDatabase(string str) { StringBuilder sb = new StringBuilder(System.Web.HttpUtility.HtmlEncode(str)); sb = sb.Replace(" "," "); sb = sb.Replace("\n", "<br />"); return sb.ToString(); } public string DatabaseStringToTextarea(string str) { StringBuilder sb = new StringBuilder(System.Web.HttpUtility.HtmlDecode(str)); sb = sb.Replace(" ", " "); sb = sb.Replace("<br />", "\n"); return sb.ToString(); } #endregion #region 检测MIME字串是否是图片性质 /// <summary> /// 检测MIME字串是否是图片性质 /// </summary> /// <param name="mime"></param> /// <returns></returns> public bool testMimeIsImage(string mime) { if (mime.Length < 7) return false; string begin = mime.Substring(0, 6).ToLower(); return begin == "image/"; } #endregion #region 检测MIME字串是否是音频性质 /// <summary> /// 检测MIME字串是否是音频性质 /// </summary> /// <param name="mime"></param> /// <returns></returns> public bool testMimeIsAudio(string mime) { if (mime.Length < 7) return false; string begin = mime.Substring(0, 6).ToLower(); return begin == "audio/"; } #endregion #region 检测MIME字串是否是视频性质 /// <summary> /// 检测MIME字串是否是礼频性质 /// </summary> /// <param name="mime"></param> /// <returns></returns> public bool testMimeIsVideo(string mime) { if (mime.Length < 7) return false; string begin = mime.Substring(0, 6).ToLower(); return begin == "video/"; } #endregion #region 检测是否是支持的文件扩展名 /// <summary> /// 检测是否是支持的文件扩展名 /// </summary> /// <param name="ext">扩展名,如果是空字串,则默认都是不能通过检测</param> /// <param name="extcoll">扩展句列表,用|分隔,如果是空字串,则默认都是通过检测</param> /// <returns>结果</returns> public bool testIsSupportFileExtent(string ext, string extcoll) { if (ext == "") return false; if (extcoll == "") return true; ext = ext.Trim().ToLower(); char[] sep = { ‘,‘ }; string[] extarr = extcoll.Split(sep); for (int i = 0; i < extarr.Length; i++) { if (extarr[i].Trim().ToLower() == ext) return true; } return false; } #endregion #region 文字水印 /// <summary> /// /// </summary> /// <param name="page"></param> /// <param name="path"></param> /// <returns></returns> public bool MakeWaterImageWord(System.Web.UI.Page page, string path, string newpath) { //加文字水印, System.Drawing.Image image = System.Drawing.Image.FromFile(path); //System.Drawing.Image image=System.Drawing.Image.FromStream(); Graphics g = Graphics.FromImage(image); g.DrawImage(image, 0, 0, image.Width, image.Height); Font f = new Font("Verdana", 16); Brush b = new SolidBrush(Color.BurlyWood); string addText = "熊猫伯伯\nhttp://www.pandabobo.cn"; try { g.DrawString(addText, f, b, 10, 10); g.Dispose(); //保存加水印过后的图片,删除原始图片 string newPath = newpath; image.Save(newPath); image.Dispose(); if (File.Exists(path)) { File.Delete(path); } return true; } catch { return false; } } public bool MakeWaterImageWord(System.Web.UI.Page page, string path, string newpath, System.IO.Stream stream) { //加文字水印, //System.Drawing.Image image = System.Drawing.Image.FromFile(path); System.Drawing.Image image = System.Drawing.Image.FromStream(stream); Graphics g = Graphics.FromImage(image); g.DrawImage(image, 0, 0, image.Width, image.Height); Font f = new Font("Verdana", 16); Brush b = new SolidBrush(Color.BurlyWood); string addText = "熊猫伯伯\nhttp://www.pandabobo.cn"; try { g.DrawString(addText, f, b, 10, 10); g.Dispose(); //保存加水印过后的图片,删除原始图片 string newPath = newpath; image.Save(newPath); image.Dispose(); if (File.Exists(path)) { File.Delete(path); } return true; } catch { return false; } } #endregion #region 图片水印 /// <summary> /// 水印 /// </summary> /// <param name="page"></param> /// <param name="path">图片地址</param> /// <returns></returns> public bool MakeWaterImageTwo(string copyImgPath, string path) { //加图片水印 System.Drawing.Image image = System.Drawing.Image.FromFile(path); System.Drawing.Image copyImage = System.Drawing.Image.FromFile(copyImgPath); //源图 int sWidth = image.Width; int sHeight = image.Height; //水印图 int wWidth = (((copyImage.Width) * (sWidth / copyImage.Width)) * 1) / 3; int wHeight = (((copyImage.Height) * (sWidth / copyImage.Width)) * 1) / 3; if (sHeight < (sWidth * 0.382)) { wWidth = (((copyImage.Width) * (sHeight / copyImage.Height)) * 1) / 3; wHeight = (((copyImage.Height) * (sHeight / copyImage.Height)) * 1) / 3; } //make Graphics. //Graphics g = Graphics.FromImage(image); //新建一个bmp图片 System.Drawing.Image BMP = new System.Drawing.Bitmap(sWidth, sHeight); //新建一个画板 Graphics G = System.Drawing.Graphics.FromImage(BMP); //设置高质量插值法 G.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量,低速度呈现平滑程度 G.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //清空画布并以透明背景色填充 G.Clear(Color.Transparent); //加载原始图片 G.DrawImage(image, new Rectangle(0, 0, sWidth, sHeight)); //水印属性 float[][] matrixItems ={ new float[] {1, 0, 0, 0, 0}, new float[] {0, 1, 0, 0, 0}, new float[] {0, 0, 1, 0, 0}, new float[] {0, 0, 0, (float)100/100f, 0}, new float[] {0, 0, 0, 0, 1} }; ColorMatrix colorMatrix = new ColorMatrix(matrixItems); ImageAttributes MarkAttr = new ImageAttributes(); MarkAttr.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); try { //G.DrawImage(copyImage, new Rectangle(image.Width-copyImage.Width, image.Height-copyImage.Height,copyImage.Width, copyImage.Height), 0, 0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel,MarkAttr); G.DrawImage(copyImage, new Rectangle(image.Width - wWidth, image.Height - wHeight, wWidth, wHeight), 8, 10, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel, MarkAttr); image.Dispose(); if (File.Exists(path)) { File.Delete(path); } BMP.Save(path); BMP.Dispose(); return true; } catch { return false; } } #endregion #region 图片水印 2 /// <summary> /// 生成水印,可按左上、左下、右上、右下、居中、透明度生成文件,只对jpeg或jpg格式有效! /// </summary> /// <param name="sourceFile">底图</param> /// <param name="waterMarkFile">水印图</param> /// <param name="saveFile">要保存的文件</param> /// <param name="local">位置:左上(1)、左下(2)、右上(3)、右下(4)、居中(5)</param> /// <param name="alpha">透明度(1-100)</param> /// <returns>bool,是否成功</returns> public bool MakeWaterImage(string sourceFile, string waterMarkFile, string saveFile, int local, int alpha) { bool result; if (!File.Exists(sourceFile) || !File.Exists(waterMarkFile)) //如果源图或水印图不存在 return false; FileInfo fi = new FileInfo(sourceFile); //判断文件类型是否合法 if (fi.Extension.ToLower() != ".jpg" & fi.Extension.ToLower() != ".jpeg") return false; try { //原图 Bitmap sImage = new Bitmap(sourceFile); int sWidth = sImage.Width; int sHeight = sImage.Height; //水印图 Bitmap wImage = new Bitmap(waterMarkFile); int wWidth = wImage.Width; int wHeight = wImage.Height; //make Graphics. Graphics g = Graphics.FromImage(sImage); int x; //临时变量 int y; //监时变量 int x1 = 0; //原图和水印图的宽度差,即开始绘图的X位置 int y1 = 0; //原图和水印图的高度差,即开始绘图的Y位置 int w = 0; //生成的水印图的宽度,即结束绘图的X位置 int h = 0; //生成的水印图的高度,即结束绘图的Y位置 int al; //alpha int rl; //Red int gl; //Green int bl; //Blue //校验透明度 if (alpha < 1 || alpha > 100) al = 80; else al = alpha; if (sWidth > wWidth & sHeight > wHeight) //如果源图比水印图大 { switch (local) { case 1: //左上 x1 = 0; y1 = 0; break; case 2: //左下 x1 = 0; if ((sHeight - wHeight) > 0) //源图比水印图高 y1 = sHeight - wHeight; else y1 = sWidth; break; case 3: //右上 y1 = 0; if ((sWidth - wWidth) > 0) // 源图比水印图宽 x1 = sWidth - wWidth; else x1 = sWidth; break; case 4: //右下 //计算高度 if ((sHeight - wHeight) > 0) //源图比水印图高 y1 = sHeight - wHeight; else y1 = sWidth; //计算宽度 if ((sWidth - wWidth) > 0) // 源图比水印图宽 x1 = sWidth - wWidth; else x1 = sWidth; break; case 5: //居中 //计算高度 if ((sHeight - wHeight) > 0) //源图比水印图高 y1 = (sHeight - wHeight) / 2; else y1 = sWidth; //计算宽度 if ((sWidth - wWidth) > 0) // 源图比水印图宽 x1 = (sWidth - wWidth) / 2; else x1 = sWidth; break; } if ((sHeight - wHeight) > 0) h = wHeight; else h = sHeight; if ((sWidth - wWidth) > 0) w = wWidth; else w = sWidth; } else //源图比水印图小 { x1 = 0; y1 = 0; w = sWidth; h = sHeight; } //开始绘图 for (x = 1; x < w; x++) { for (y = 1; y < h; y++) { al = alpha; rl = wImage.GetPixel(x, y).R; gl = wImage.GetPixel(x, y).G; bl = wImage.GetPixel(x, y).B; al = 70; if (rl + 25 < 255) rl += 25; if (gl + 25 < 255) gl += 25; if (bl + 25 < 255) bl += 25; g.DrawEllipse(new Pen(new SolidBrush(Color.FromArgb(al, rl, gl, bl))), x1 + x, y1 + y, 1, 1); } } g.Save(); sImage.Save(saveFile); result = true; } catch { result = false; } return result; } #endregion #region 图片按比例缩小到指定范围 /// <summary> /// 图片按比例缩小到指定范围 /// </summary> /// <param name="standard_width">标准宽度</param> /// <param name="standard_height">标准高度</param> /// <param name="input_ImgUrl">要处理图片路径</param> /// <param name="out_ImgUrl">处理完毕图片路径,jpg扩展名</param> public bool ImgLimitedSize(int standard_width, int standard_height, string input_ImgUrl, string out_ImgUrl) { int Reduce_Width = 0; // 缩小的宽度 int Reduce_Height = 0; // 缩小的高度 // ===通过连接创建Image对象=== System.Drawing.Image oldimage = System.Drawing.Image.FromFile(input_ImgUrl); int oldWidth = oldimage.Size.Width;//原始宽度 int oldHeight = oldimage.Size.Height;//原始高度 System.Guid guid = oldimage.RawFormat.Guid; if (oldWidth < standard_width && oldHeight < standard_height) { oldimage.Dispose(); if (input_ImgUrl != out_ImgUrl) { System.IO.FileInfo file = new FileInfo(input_ImgUrl); file.CopyTo(out_ImgUrl, true); } return true; } else { //根据目标大小调整缩小后高宽 float aimpp = (float)standard_width / (float)standard_height; float oldpp = (float)oldWidth / (float)oldHeight; float reducepp; if (aimpp == oldpp) { Reduce_Width = standard_width; Reduce_Height = standard_height; } else if (aimpp > oldpp) { reducepp = (float)standard_height / (float)oldHeight; Reduce_Width = Convert.ToInt32(reducepp * oldWidth); Reduce_Height = standard_height; } else { reducepp = (float)standard_width / (float)oldWidth; Reduce_Width = standard_width; Reduce_Height = Convert.ToInt32(reducepp * oldHeight); } } //新建一个bmp图片 System.Drawing.Image bitmap = new System.Drawing.Bitmap(Reduce_Width, Reduce_Height); //新建一个画板 Graphics g = System.Drawing.Graphics.FromImage(bitmap); //设置高质量插值法 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量,低速度呈现平滑程度 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //清空画布并以透明背景色填充 g.Clear(Color.Transparent); //按指定的高宽范围比例缩小图片 g.DrawImage(oldimage, new Rectangle(0, 0, Reduce_Width, Reduce_Height), new Rectangle(0, 0, oldWidth, oldHeight), GraphicsUnit.Pixel); try { ImageFormat saveformat = oldimage.RawFormat; oldimage.Dispose(); //以原始格式保存缩略图 bitmap.Save(out_ImgUrl, saveformat); } catch (System.Exception e) { throw e; } finally { bitmap.Dispose(); g.Dispose(); } return true; } #endregion #region 缩放图片到指定大小 /// <summary> /// 缩放图片到指定大小(需要裁剪) /// </summary> /// <param name="standard_width">标准宽度</param> /// <param name="standard_height">标准高度</param> /// <param name="input_ImgUrl">要处理图片路径</param> /// <param name="out_ImgUrl">处理完毕图片路径,jpg扩展名</param> /// <returns>是否成功</returns> public bool ImgFixedSize(int standard_width, int standard_height, string input_ImgUrl, string out_ImgUrl) { int CutX = 0;//裁剪X坐标 int CutY = 0;//裁剪Y坐标 int CutWidth;//裁剪宽度 int CutHeight;//裁剪调试 // ===通过连接创建Image对象=== System.Drawing.Image oldimage = System.Drawing.Image.FromFile(input_ImgUrl); int oldWidth = oldimage.Size.Width;//图片原始宽度 int oldHeight = oldimage.Size.Height;//图片原始高度 System.Guid guid = oldimage.RawFormat.Guid; float aimpp = (float)standard_width / (float)standard_height; float oldpp = (float)oldWidth / (float)oldHeight; if (aimpp == oldpp) { CutWidth = oldWidth; CutHeight = oldHeight; } else if (aimpp > oldpp) { CutWidth = oldWidth; CutHeight = Convert.ToInt32((float)standard_height * ((float)oldWidth / (float)standard_width)); CutX = 0; CutY = (oldHeight - CutHeight) / 2; } else { CutWidth = Convert.ToInt32((float)standard_width * ((float)oldHeight / (float)standard_height)); CutHeight = oldHeight; CutX = (oldWidth - CutWidth) / 2; CutY = 0; } //新建一个bmp图片 System.Drawing.Image bitmap = new System.Drawing.Bitmap(standard_width, standard_height); //新建一个画板 Graphics g = System.Drawing.Graphics.FromImage(bitmap); //设置高质量插值法 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量,低速度呈现平滑程度 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //清空画布并以透明背景色填充 g.Clear(Color.Transparent); //在指定位置并且按指定大小绘制原图片的指定部分 g.DrawImage(oldimage, new Rectangle(0, 0, standard_width, standard_height), new Rectangle(CutX, CutY, CutWidth, CutHeight), GraphicsUnit.Pixel); try { ImageFormat saveformat = oldimage.RawFormat; oldimage.Dispose(); //以原始格式保存缩略图 bitmap.Save(out_ImgUrl, saveformat); } catch (System.Exception e) { throw e; } finally { bitmap.Dispose(); g.Dispose(); } return true; } #endregion #region 缩放图片到指定的宽或高 public bool ImgLimitWidthOrHeight(int standard, string input_ImgUrl, string out_ImgUrl) { return ImgLimitWidthOrHeight(standard, input_ImgUrl, out_ImgUrl, "width"); } /// <summary> /// 缩放图片到指定的宽或高 /// </summary> /// <param name="standard">标准宽度</param> /// <param name="input_ImgUrl">要处理图片路径</param> /// <param name="out_ImgUrl">处理完毕图片路径</param> /// <param name="WidthOrHeight">指定以长或宽为标准,width或height</param> /// <returns>是否成功</returns> public bool ImgLimitWidthOrHeight(int standard, string input_ImgUrl, string out_ImgUrl, string WidthOrHeight) { int Reduce_Width = 0; // 缩小的宽度 int Reduce_Height = 0; // 缩小的高度 // ===通过连接创建Image对象=== System.Drawing.Image oldimage = System.Drawing.Image.FromFile(input_ImgUrl); int oldWidth = oldimage.Size.Width;//原始宽度 int oldHeight = oldimage.Size.Height;//原始高度 System.Guid guid = oldimage.RawFormat.Guid; float aimpp; WidthOrHeight = WidthOrHeight.ToLower().Trim(); if (WidthOrHeight == "width") { aimpp = (float)standard / (float)oldWidth; Reduce_Width = standard; Reduce_Height = (int)((float)oldHeight * aimpp); } else { aimpp = (float)standard / (float)oldHeight; Reduce_Width = (int)((float)oldWidth * aimpp); Reduce_Height = standard; } //新建一个bmp图片 System.Drawing.Image bitmap = new System.Drawing.Bitmap(Reduce_Width, Reduce_Height); //新建一个画板 Graphics g = System.Drawing.Graphics.FromImage(bitmap); //设置高质量插值法 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量,低速度呈现平滑程度 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //清空画布并以透明背景色填充 g.Clear(Color.Transparent); //按指定的高宽范围比例缩小图片 g.DrawImage(oldimage, new Rectangle(0, 0, Reduce_Width, Reduce_Height), new Rectangle(0, 0, oldWidth, oldHeight), GraphicsUnit.Pixel); try { ImageFormat saveformat = oldimage.RawFormat; oldimage.Dispose(); //以原始格式保存缩略图 bitmap.Save(out_ImgUrl, saveformat); } catch (System.Exception e) { throw e; } finally { bitmap.Dispose(); g.Dispose(); } return true; } #endregion #region 获取图片文件长宽 /// <summary> /// 获取图片文件长宽 /// </summary> /// <param name="filepath">图片路径</param> /// <returns>包含长宽数据的ArrayList</returns> public ArrayList getImageWidthAndHeight(string filepath) { ArrayList arr = new ArrayList(2); try { System.Drawing.Image img = System.Drawing.Image.FromFile(filepath); arr[0] = img.Width; arr[1] = img.Height; img.Dispose(); } catch { arr[0] = -1; arr[1] = -1; } return arr; } #endregion #region 测试图片是否超过指定大小 /// <summary> /// 测试图片是否超过指定大小 /// </summary> /// <param name="filepath">图片文件地址(磁盘绝对地址)</param> /// <param name="width">指定宽</param> /// <param name="height">指定高</param> /// <returns>结果</returns> public bool testImageOverSize(string filepath, int width, int height) { ArrayList wh = this.getImageWidthAndHeight(filepath); int w = (int)wh[0]; int h = (int)wh[1]; if (w < 1 || h < 1) { return true; } else { return w > width || h > height; } } #endregion #region 创建文件夹名 /// <summary> /// 功能:创建文件名 /// 返回:文件夹名foldername /// 编写人:简清舟 /// </summary> /// <returns></returns> public string CreateFolderName() { DateTime time = System.DateTime.Now;//取时间 string foldername = time.Year.ToString() + time.Month.ToString();//创建文件夹名 return foldername;//返回文件名 } #endregion #region 创建文件夹 /// <summary> /// 功能:创建文件夹 /// 参数:path是文件的路径 /// 编写人:简清舟 /// </summary> /// <param name="path">文件路径</param> public bool CreateFolder(string path, Page page) { try { path = page.Server.MapPath(path);// // 检查目录是否存在 if (Directory.Exists(path)) { //Response.Write("目录已经存在."); return true; } // 创建目录 DirectoryInfo di = Directory.CreateDirectory(path); //Response.Write("目录应创建成功"); // 删除目录 //di.Delete(); //Console.WriteLine("目录已经删除."); return true; } catch { return false; //Response.Write("<script>alert(‘z8系统提示您:目录创建失败!‘)</script>"); } } #endregion #region 删除HTML标签"<...>" /// <summary> /// 删除字串中的HTML标签 /// </summary> /// <param name="txt">原始字串</param> /// <returns>结果字串</returns> public string DeleteHtmlTag(string txt) { System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("<[^>]{1,}>"); return reg.Replace(txt, ""); } #endregion #region 把数字转换为以Kb或Mb或T表示的容量 /// <summary> /// 把数字转换为以Kb或Mb或T表示的容量 /// </summary> /// <param name="size">数字(字节)</param> /// <returns>表示方法</returns> public string ConvertLongToVolumeString(long size) { double rtnvol = 0; if (size < 1024) { return size.ToString() + "Bit"; } else if (size < 1048576) { rtnvol = (double)size / 1024.0; return rtnvol.ToString("f2") + "KB"; } else if (size < 1073741824) { rtnvol = (double)size / 1048576.0; return rtnvol.ToString("f2") + "MB"; } else if (size < 1099511627776) { rtnvol = (double)size / 1073741824.0; return rtnvol.ToString("f2") + "GB"; } else { rtnvol = (double)size / 1099511627776.0; return rtnvol.ToString("f2") + "T"; } } #endregion #region 输出MediaPlayer播放器代码 /// <summary> /// 输出MediaPlayer播放器代码 /// </summary> /// <param name="url">URL</param> /// <param name="auto">是否自动播放</param> /// <returns>代码</returns> public string GetMediaPlayCodes(string url, bool auto) { return this.GetMediaPlayCodes(url, auto, true); } public string GetMediaPlayCodes(string url, bool auto, bool withSkin) { StringBuilder sbframe = new StringBuilder(); if (withSkin) { sbframe.Append("<table width=\"350\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\"><tr><td colspan=\"3\"><img src=\"player_imgs/1_13.gif\" width=\"350\" height=\"17\" /></td></tr><tr><td width=\"19\" height=\"0\"><img src=\"player_imgs/1_14.gif\" width=\"19\" height=\"210\" /></td><td style=\"width:312px;height:210px;\">{$PlayerCode}</td><td width=\"19\" align=\"right\"><img src=\"player_imgs/1_15.gif\" width=\"19\" height=\"210\" /></td></tr></table>"); sbframe.Append("<table width=\"350\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\"><tr><td width=\"20\" rowspan=\"4\"><img src=\"player_imgs/1_16.gif\" width=\"20\" height=\"58\" /></td><td height=\"7\" valign=\"bottom\" bgcolor=\"#999999\"></td><td width=\"17\" rowspan=\"4\"><img src=\"player_imgs/1_17.gif\" width=\"17\" height=\"58\" /></td></tr><tr><td height=\"3\" valign=\"bottom\" bgcolor=\"#FFFFFF\"></td></tr><tr><td height=\"6\" valign=\"bottom\" bgcolor=\"#FFFFFF\"><img src=\"player_imgs/1_18.gif\" width=\"313\" height=\"7\" /></td></tr><tr><td height=\"41\" background=\"player_imgs/1_27.gif\">"); sbframe.Append("<img src=\"player_imgs/pause.gif\" style=\"cursor:pointer;\" onclick=\"javascript:PlayerPause();\" />"); sbframe.Append("<img src=\"player_imgs/play.gif\" style=\"cursor:pointer;\" onclick=\"javascript:PlayerPlay();\" />"); sbframe.Append("<img src=\"player_imgs/stop.gif\" style=\"cursor:pointer;\" onclick=\"javascript:PlayerStop();\" />"); sbframe.Append("<img src=\"player_imgs/fullscreen.gif\" style=\"cursor:pointer;\" onclick=\"javascript:PlayerFullscreen();\" />"); sbframe.Append("</td></tr></table>"); } else { sbframe.Append("{$PlayerCode}"); } StringBuilder sb = new StringBuilder(); sb.Append("\n<script>\n"); sb.Append("document.write(\"<object id=\\\"mediaplayer\\\" name=\\\"mediaplayer\\\" classid=\\\"clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6\\\" codebase=\\\"http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,1,5,217\\\" type=\\\"application/x-oleobject\\\" width=\\\"100%\\\" height=\\\"100%\\\">\");\n"); sb.Append("document.write(\"<param name=\\\"uiMode\\\" value=\\\"none\\\">\");\n"); sb.Append("document.write(\"<param name=\\\"AutoStart\\\" value=\\\""); if (auto) { sb.Append("-1"); } else { sb.Append("0"); } sb.Append("\\\">\");\n"); sb.Append("document.write(\"<param name=\\\"StretchToFit\\\" value=\\\"1\\\">\");\n"); sb.Append("document.write(\"<param name=\\\"EnableContextMenu\\\" value=\\\"0\\\">\");\n"); sb.Append("document.write(\"<param name=\\\"url\\\" value=\\\"" + url + "\\\">\");\n"); sb.Append("if(!window.ActiveXObject)"); sb.Append("document.write(\"<embed id=\\\"mediaplayer2\\\" name=\\\"mediaplayer_2\\\" type=\\\"application/x-mplayer2\\\" pluginspage=\\\"http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/\\\" filename=\\\"" + url + "\\\" src=\\\"" + url + "\\\" autostart=\\\"1\\\" ShowControls=1 ShowDisplay=0 ShowStatusBar=0 autosize=0 width=\\\"100%\\\" height=\\\"100%\\\" uiMode=\\\"full\\\" StretchToFit=\\\"1\\\" EnableContextMenu=\\\"1\\\"></embed>\");\n"); sb.Append("document.write(\"</object>\");\n"); sb.Append("var _player = document.getElementById(\"mediaplayer\");\n"); sb.Append("var _controls = _player.controls;\n"); sb.Append("function PlayerPlay(){if(_player.playState == 3){return;}_controls.play();}\n"); sb.Append("function PlayerPause(){_controls.pause();}\n"); sb.Append("function PlayerStop(){_player.autoStart=false;_player.URL = _player.URL;_controls.stop();}\n"); sb.Append("function PlayerFullscreen(){if(_player.playState == 3){_player.fullscreen=true;}else{return;}}\n"); sb.Append("</script>\n"); sbframe.Replace("{$PlayerCode}", sb.ToString()); return sbframe.ToString(); } public string GetMediaPlayCodes(string url, bool auto, string mode) { StringBuilder sb = new StringBuilder(); sb.Append("\n<object id=\"mediaplayer\" name=\"mediaplayer\" classid=\"clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6\" codebase=\"http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,1,5,217\" type=\"application/x-oleobject\" width=\"100%\" height=\"100%\">\n"); sb.Append("<param name=\"uiMode\" value=\"" + mode.Trim() + "\">\n"); sb.Append("<param name=\"AutoStart\" value=\""); if (auto) { sb.Append("-1"); } else { sb.Append("0"); } sb.Append(">\n"); sb.Append("<param name=\"StretchToFit\" value=\"1\">\n"); sb.Append("<param name=\"EnableContextMenu\" value=\"0\">\n"); sb.Append("<param name=\"url\" value=\"" + url + "\">\n"); sb.Append("<embed type=\"application/x-mplayer2\" pluginspage=\"http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/\" filename=\"" + url + "\" src=\"" + url + "\" Name=\"mediaplayer\" autostart=\"" + auto.ToString() + "\" ShowControls=1 ShowDisplay=0 ShowStatusBar=0 autosize=0 width=\"100%\" height=\"100%\" uiMode=\"" + mode + "\" StretchToFit=\"1\" EnableContextMenu=\"0\"></embed>\n"); sb.Append("</object>\n"); return sb.ToString(); } #endregion #region 传入一字符串,返回拼音首字母 /// <summary> /// 传入一字符串,返回字串第一个字符的拼音首字母 /// </summary> /// <param name="str">传入字串</param> /// <returns>首字母</returns> public string GetStringCapital(string str) { if (str.Length < 1) return ""; string _Temp = str.Substring(0, 1); if (Convert.ToChar(_Temp) >= 0 && Convert.ToChar(_Temp) < 256) return _Temp; if (_Temp.CompareTo("吖") < 0) { return str; } if (_Temp.CompareTo("八") < 0) { return "A"; } if (_Temp.CompareTo("嚓") < 0) { return "B"; } if (_Temp.CompareTo("咑") < 0) { return "C"; } if (_Temp.CompareTo("妸") < 0) { return "D"; } if (_Temp.CompareTo("发") < 0) { return "E"; } if (_Temp.CompareTo("旮") < 0) { return "F"; } if (_Temp.CompareTo("铪") < 0) { return "G"; } if (_Temp.CompareTo("讥") < 0) { return "H"; } if (_Temp.CompareTo("咔") < 0) { return "J"; } if (_Temp.CompareTo("垃") < 0) { return "K"; } if (_Temp.CompareTo("嘸") < 0) { return "L"; } if (_Temp.CompareTo("拏") < 0) { return "M"; } if (_Temp.CompareTo("噢") < 0) { return "N"; } if (_Temp.CompareTo("妑") < 0) { return "O"; } if (_Temp.CompareTo("七") < 0) { return "P"; } if (_Temp.CompareTo("亽") < 0) { return "Q"; } if (_Temp.CompareTo("仨") < 0) { return "R"; } if (_Temp.CompareTo("他") < 0) { return "S"; } if (_Temp.CompareTo("哇") < 0) { return "T"; } if (_Temp.CompareTo("夕") < 0) { return "W"; } if (_Temp.CompareTo("丫") < 0) { return "X"; } if (_Temp.CompareTo("帀") < 0) { return "Y"; } if (_Temp.CompareTo("咗") < 0) { return "Z"; } return _Temp; } #endregion #region 将System.Web.HttpPostedFile 转化为byte[] /// <summary> ///函数名称:PostedFileToBytes ///函数性能功能描述:将System.Web.HttpPostedFile 转化为byte[] ///本函数调用的类与函数清单: /// </summary> /// <returns>byte[]</returns> public byte[] PostedFileToBytes(System.Web.HttpPostedFile PostFile) { int FileSize = PostFile.ContentLength; //大小 byte[] fileContent;//实际文件的数据. string FileType = PostFile.ContentType;//发送文件的MIME内容类型 BinaryReader AttContent = new BinaryReader(PostFile.InputStream);//获得文件的流 AttContent.BaseStream.Seek(0, SeekOrigin.Begin); return fileContent = AttContent.ReadBytes(FileSize);//获得文件的字节流 } #endregion #region 从路径形式的字串中提取文件名 /// <summary> /// 从路径形式的字串中提取文件名 /// </summary> /// <param name="path">路径</param> /// <param name="withext">是否带扩展名</param> /// <returns>文件名</returns> public string GetFileName(string path, bool withext) { int last = path.LastIndexOf("\\"); if (last >= 0) { path = path.Substring(last + 1); } last = path.LastIndexOf("."); if (withext || last < 0) { return path; } else { return path.Substring(0, last); } } /// <summary> /// 从路径形式的字串中提取文件名 /// </summary> /// <param name="path">路径</param> /// <returns>文件名</returns> public string GetFileName(string path) { return this.GetFileName(path, true); } #endregion #region 请求internet页面Html源码 /// <summary> /// 请求并下载页面 /// </summary> /// <returns>The data downloaded from the page</returns> public string GetPageHTML(string url) { string m_uri = url; WebResponse response = null; Stream stream = null; StreamReader reader = null; try { //----------返回被请求的internet上的资源--------- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(m_uri); response = request.GetResponse(); stream = response.GetResponseStream(); //------------------------------ if (!response.ContentType.ToLower().StartsWith("text/"))//如果类型不是text 就调用SaveBinaryFile写成二近制文件 { //SaveBinaryFile(response);//写二进制文件 return null; } string buffer = "", line; reader = new StreamReader(stream, Encoding.GetEncoding("gb2312")); while ((line = reader.ReadLine()) != null) { buffer += line + "\r\n"; } return buffer; } //catch(WebException e) catch { return ""; } //catch(IOException e) finally { if (reader != null) reader.Close(); if (stream != null) stream.Close(); if (response != null) response.Close(); } } /// <summary> /// 信息写入磁盘 /// </summary> /// <param name="buffer">写入内容</param> /// <param name="Path">写入的实际地址和完整的文件名称</param> /// <returns></returns> public bool SaveTextFile(string buffer, string Path)// 保存文本文件 { if (Path == "") return false; string filename = Path;//创建文件名和文件目录 try { StreamWriter outStream = new StreamWriter(filename, false, Encoding.GetEncoding("gb2312")); //写磁盘 outStream.WriteLine(buffer); outStream.Close(); return true; } catch { return false; } } /// <summary> /// 生成静态页面 /// </summary> /// <param name="url">资源页面URL地址</param> /// <param name="htmlfileAbsPath">生成的目录html文件绝对路径</param> /// <returns>是否生成成功</returns> public bool GenHTML(string url, string htmlfileAbsPath, Page page) { try { string source = this.GetPageHTML(url); if (source.ToString() != "") { this.SaveTextFile(source, htmlfileAbsPath); return true; } else { return false; } } catch { return false; } } #endregion #region 使用正则方式替换字串 /// <summary> /// 使用正则方式替换字串 /// </summary> /// <param name="txt">要进行操作的字串</param> /// <param name="reg">正则字串</param> /// <param name="replace">替换字串</param> /// <returns>结果字串</returns> public string RegReplace(string txt, string reg, string replace) { System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(reg); return regex.Replace(txt, replace); } #endregion #region IP部分保密处理 public string IPSafe(string ip) { int dotStart = ip.LastIndexOf(".") + 1; if (dotStart < 1) return "未知"; int dotEnd = ip.Length; return ip.Remove(dotStart, dotEnd - dotStart) + "*"; } #endregion #region 读取配置节 /// <summary> /// 读取配置节内容 /// </summary> /// <param name="key">配置标识</param> /// <returns>结果字串</returns> public string GetAppsetting(string key) { try { return System.Configuration.ConfigurationSettings.AppSettings[key]; } catch { return null; } } #endregion #region 删除磁盘文件 /// <summary> /// 删除磁盘文件 /// </summary> /// <param name="Path">文件路径</param> /// <returns></returns> public bool DeleteFile(string Path) { try { System.IO.File.Delete(Path); return true; } catch { return false; } } #endregion #region 发送电子邮件 /// <summary> /// 发送电子邮件 /// </summary> /// <param name="email">收件人地址</param> /// <param name="name">收件人姓名</param> /// <param name="subject">邮件主题</param> /// <param name="body">邮件正文</param> public bool SendMail(string EmailSendTheme, string email, string name, string subject, string body) { string mailsetup = this.GetAppsetting("emailset"); string s_object; string s_email; string s_name; string s_server; string s_passport; string s_passkey; try { char[] sep = { ‘,‘ }; string[] vals = mailsetup.Split(sep); s_object = vals[0].Trim().ToLower(); //(1)表示发件人的E-Mail地址。该地址一般与使用SMTP服务器验证时所需的登录帐户相同。 s_email = vals[1].Trim(); //(2)表示发件人的名称。 s_name = vals[2].Trim(); //(3)可以忽略 EHLO/HELO 状态对你的mailserver s_server = vals[3].Trim(); //(4)表示当邮件服务器使用SMTP发信验证时设置的登录帐户。 s_passport = vals[4].Trim(); //(5)表示当邮件服务器使用SMTP发信验证时设置的密码 s_passkey = vals[5].Trim(); } catch { return false; } switch (s_object) { case "jmail": jmail.MessageClass jmail = new jmail.MessageClass(); //Logging属性,表示是否启用日志 jmail.Logging = true; //表示屏蔽例外错误,返回FALSE或TRUE值,当值为TRUE时,表示邮件发送会忽略错误,不将错误信息返回给操作系统。 jmail.Silent = true; jmail.Priority = 1; jmail.Encoding = "GB2312"; //设置邮件显示的字符集,中文简体可使用utf-8 jmail.Charset = "GB2312"; jmail.ISOEncodeHeaders = false; // 邮件主体(HTML(注意信件内链接附件的方式)) x jmail.HTMLBody = body; //邮件主题 jmail.Subject = subject; //表示发件人的E-Mail地址。该地址一般与使用SMTP服务器验证时所需的登录帐户相同。 jmail.From = s_email; //表示发件人的名称。 jmail.FromName = s_name; //表示当邮件服务器使用SMTP发信验证时设置的登录帐户。( 身份验证 ) jmail.MailServerUserName = s_passport; jmail.MailServerPassWord = s_passkey; //可以忽略 EHLO/HELO 状态对你的mailserver jmail.MailDomain = s_server; //表示收件人的E-Mail地址。 jmail.AddRecipient(email, name, null); bool result = jmail.Send(s_server, false); jmail.Close(); return result; case "cdo": System.Web.Mail.MailMessage cdomail = new MailMessage(); cdomail.To = "\"" + HttpUtility.HtmlEncode(name) + "\"<" + email + ">"; cdomail.From = "\"" + HttpUtility.HtmlEncode(s_name) + "\"<" + s_email + ">"; cdomail.BodyEncoding = Encoding.UTF8; cdomail.BodyFormat = MailFormat.Html; cdomail.Priority = MailPriority.High; cdomail.Subject = subject; cdomail.Body = body; SmtpMail.Send(cdomail); return true; case "cdo2": MailMessage cdomail2 = new MailMessage(); cdomail2.To = email; cdomail2.From = s_email; cdomail2.Subject = subject; cdomail2.Body = body; cdomail2.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", "2"); cdomail2.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", s_server); cdomail2.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout", 10); cdomail2.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); cdomail2.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", s_passport); cdomail2.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", s_passkey); SmtpMail.Send(cdomail2); return true; default: return false; } } #endregion #region 替换非法字符 public string Sqlstring(string str) { if (str != null && str != "") { str = str.Replace("‘", ""); str = str.Replace("\"", ""); str = str.Replace(";", ""); str = str.Replace("<", ""); str = str.Replace(">", ""); str = str.Replace("(", ""); str = str.Replace(")", ""); str = str.Replace("*", ""); str = str.Replace("--", ""); str = str.Replace("select", ""); str = str.Replace("SELECT", ""); str = str.Replace("insert", ""); str = str.Replace("INSERT", ""); str = str.Replace("update", ""); str = str.Replace("UPDATE", ""); str = str.Replace("delete", ""); str = str.Replace("DELETE", ""); str = str.Replace("create", ""); str = str.Replace("CREATE", ""); str = str.Replace("drop", ""); str = str.Replace("DROP", ""); str = str.Replace("delcare", ""); str = str.Replace("DELCARE", ""); str = str.Replace("truncate", ""); str = str.Replace("TRUNCATE", ""); str = str.Replace("script", ""); str = str.Replace("SCRIPT", ""); //str = str.Replace("and", ""); //str = str.Replace("AND", ""); str = FilterXSS(str); } return str; } public string Sqlstring(string str, int id) { if (str != null && str != "") { str = str.Replace("‘", "’"); str = str.Replace("\"", "”"); str = str.Replace(";", ";"); str = str.Replace("<", "["); str = str.Replace(">", "]"); str = str.Replace("(", "("); str = str.Replace(")", ")"); str = str.Replace("*", "×"); str = str.Replace("--", ""); str = str.Replace("\r\n", "<br>"); str = str.Replace("\n", "<br>"); //str = str.Replace(" "," "); str = str.Replace("select", ""); str = str.Replace("SELECT", ""); str = str.Replace("insert", ""); str = str.Replace("INSERT", ""); str = str.Replace("update", ""); str = str.Replace("UPDATE", ""); str = str.Replace("delete", ""); str = str.Replace("DELETE", ""); str = str.Replace("create", ""); str = str.Replace("CREATE", ""); str = str.Replace("drop", ""); str = str.Replace("DROP", ""); str = str.Replace("delcare", ""); str = str.Replace("DELCARE", ""); str = str.Replace("truncate", ""); str = str.Replace("TRUNCATE", ""); str = str.Replace("script", ""); str = str.Replace("SCRIPT", ""); //str = str.Replace("and", ""); //str = str.Replace("AND", ""); str = FilterXSS(str); } return str; } #endregion; #region 过滤xss攻击脚本 /// <summary> /// 过滤xss攻击脚本 /// </summary> /// <param name="input">传入字符串</param> /// <returns>过滤后的字符串</returns> public string FilterXSS(string html) { if (string.IsNullOrEmpty(html)) return string.Empty; // CR(0a) ,LF(0b) ,TAB(9) 除外,过滤掉所有的不打印出来字符. // 目的防止这样形式的入侵 <java\0script> // 注意:\n, \r, \t 可能需要单独处理,因为可能会要用到 string ret = System.Text.RegularExpressions.Regex.Replace( html, "([\x00-\x08][\x0b-\x0c][\x0e-\x20])", string.Empty); //替换所有可能的16进制构建的恶意代码 //<IMG SRC=@avascript:a&_#X6Cert('XSS')> string chars = "[email protected]#$%^&*()~`;:?+/={}[]-_|‘\"\\"; for (int i = 0; i < chars.Length; i++) { ret = System.Text.RegularExpressions.Regex.Replace(ret, string.Concat("(&#[x|X]0{0,}", Convert.ToString((int)chars[i], 16).ToLower(), ";?)"), chars[i].ToString(), System.Text.RegularExpressions.RegexOptions.IgnoreCase); } //过滤\t, \n, \r构建的恶意代码 string[] keywords = {"javascript", "vbscript", "expression", "applet", "meta", "xml", "blink", "link", "style", "script", "embed", "object", "iframe", "frame", "frameset", "ilayer", "layer", "bgsound", "title", "base" ,"onabort", "onactivate", "onafterprint", "onafterupdate", "onbeforeactivate", "onbeforecopy", "onbeforecut", "onbeforedeactivate", "onbeforeeditfocus", "onbeforepaste", "onbeforeprint", "onbeforeunload", "onbeforeupdate", "onblur", "onbounce", "oncellchange", "onchange", "onclick", "oncontextmenu", "oncontrolselect", "oncopy", "oncut", "ondataavailable", "ondatasetchanged", "ondatasetcomplete", "ondblclick", "ondeactivate", "ondrag", "ondragend", "ondragenter", "ondragleave", "ondragover", "ondragstart", "ondrop", "onerror", "onerrorupdate", "onfilterchange", "onfinish", "onfocus", "onfocusin", "onfocusout", "onhelp", "onkeydown", "onkeypress", "onkeyup", "onlayoutcomplete", "onload", "onlosecapture", "onmousedown", "onmouseenter", "onmouseleave", "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onmousewheel", "onmove", "onmoveend", "onmovestart", "onpaste", "onpropertychange", "onreadystatechange", "onreset", "onresize", "onresizeend", "onresizestart", "onrowenter", "onrowexit", "onrowsdelete", "onrowsinserted", "onscroll", "onselect", "onselectionchange", "onselectstart", "onstart", "onstop", "onsubmit", "onunload"}; bool found = true; while (found) { string retBefore = ret; for (int i = 0; i < keywords.Length; i++) { string pattern = "/"; for (int j = 0; j < keywords[i].Length; j++) { if (j > 0) pattern = string.Concat(pattern, ‘(‘, "(&#[x|X]0{0,8}([9][a][b]);?)?", "|(�{0,8}([9][10][13]);?)?", ")?"); pattern = string.Concat(pattern, keywords[i][j]); } string replacement = string.Concat(keywords[i].Substring(0, 2), "<x>", keywords[i].Substring(2)); ret = System.Text.RegularExpressions.Regex.Replace(ret, pattern, replacement, System.Text.RegularExpressions.RegexOptions.IgnoreCase); if (ret == retBefore) found = false; } } return ret; } #endregion #region 是否空 /// <summary>是否空</summary> /// <param name="strInput">输入字符串</param> /// <returns>true/false</returns> public bool IsBlank(string strInput) { if (strInput == null || strInput.Trim() == "") { return true; } else { return false; } } #endregion #region 是否数字 /// <summary>是否数字</summary> /// <param name="strInput">输入字符串</param> /// <returns>true/false</returns> private Regex RegNumber = new Regex("^[0-9]+$"); private static Regex RegDecimal = new Regex("^[0-9]+[.]?[0-9]+$"); public bool IsNumeric(string strInput) { if (strInput != null && strInput != "") { Match m = RegNumber.Match(strInput); return m.Success; } else { return false; } } public bool IsDecimal(string inputData) { if (inputData != null && inputData != "") { Match m = RegNumber.Match(inputData); if (m.Success) return m.Success; m = RegDecimal.Match(inputData); return m.Success; } else { return false; } } #endregion #region 是否日期 /// <summary>是否日期</summary> /// <param name="strInput">输入字符串</param> /// <returns>true/false</returns> public bool isDate(string strInput) { try { if (strInput != null && strInput != "" && strInput.Length >= 8) { string s = strInput.Substring(0, 4); if (!IsNumeric(s) || int.Parse(s) < 1900) { return false; } else { DateTime t = Convert.ToDateTime(strInput); return true; } } else { return false; } } catch { return false; } } #endregion #region 是否为合法的手机号码 /// <summary>是否为合法的手机号码</summary> /// <param name="strInput">输入字符串</param> /// <returns>true/false</returns> private Regex RegMobile = new Regex(@"(^(13\d{9})$)|(^(15\d{9})$)|(^(18\d{9})$)|(^(14\d{9})$)"); public bool isMobile(string strInput) { if (strInput != null && strInput != "") { Match m = RegMobile.Match(strInput); return m.Success; } else { return false; } } #endregion #region 是否为合法的电话号码 /// <summary>是否为合法的电话号码</summary> /// <param name="strInput">输入字符串</param> /// <returns>true/false</returns> private Regex RegTEL = new Regex(@"(^(\d{7,8})$)|(^(0\d{2,3}\-\d{6,8}(\-\d{1,4})?)$)"); public bool isTel(string strInput) { if (strInput != null && strInput != "") { Match m = RegTEL.Match(strInput); return m.Success; } else { return false; } } #endregion #region 邮政编码 /// <summary> /// 是否是邮政编码 /// </summary> /// <param name="inputData">输入字符串</param> /// <returns></returns> private Regex RegZip = new Regex(@"^(\d{6})$"); public bool IsZip(string inputData) { if (inputData != null && inputData != "") { Match m = RegZip.Match(inputData); return m.Success; } else { return false; } } #endregion #region 是否为身份证号 /// <summary> /// 是否为身份证号 /// </summary> /// <param name="strInput">输入字符串</param> /// <returns></returns> private Regex RegIDCard = new Regex("^[1-9]([0-9]{17}|[0-9]{14}|[0-9]{16}[0-9,X,x])$"); public bool IsIDCard(string strInput) { if (strInput != null && strInput != "") { Match m = RegIDCard.Match(strInput); return m.Success; } else { return false; } } #endregion #region js脚本 public void Alert(string message, int ID) { message = this.Sqlstring(message); string js = @"<Script language=‘JavaScript‘ defer> alert(‘" + message + "‘);history.go(" + ID + ");</Script>"; HttpContext.Current.Response.Write(js); } public void Alert(string message) { message = this.Sqlstring(message); string js = @"<Script language=‘JavaScript‘ defer> alert(‘" + message + "‘);</Script>"; HttpContext.Current.Response.Write(js); } public void Alert(System.Web.UI.Page page, string message, int ID) { message = this.Sqlstring(message); string js = @"<Script language=‘JavaScript‘ defer> alert(‘" + message + "‘);history.go(" + ID + ");</Script>"; page.ClientScript.RegisterStartupScript(this.GetType(), "提示", js); } public void Alert(System.Web.UI.Page page, string message) { message = this.Sqlstring(message); string js = @"<Script language=‘JavaScript‘ defer> alert(‘" + message + "‘);</Script>"; page.ClientScript.RegisterStartupScript(this.GetType(), "提示", js); } /// <summary> /// 弹出窗口,转向Url制定的页面 /// </summary> /// <param name="url"></param> public void Location(string message, string url) { message = this.Sqlstring(message); string js = @"<Script language=‘JavaScript‘ defer> alert(‘" + message + "‘); window.location.replace(‘{0}‘);"; js += "</Script>"; js = string.Format(js, url); HttpContext.Current.Response.Write(js); } /// <summary> /// 弹出窗口,转向Url制定的页面 /// </summary> /// <param name="url"></param> public void Location(System.Web.UI.Page page, string message, string url) { message = this.Sqlstring(message); string js = @"<Script language=‘JavaScript‘ defer> alert(‘" + message + "‘); window.location.replace(‘{0}‘);</Script>"; js = string.Format(js, url); page.ClientScript.RegisterStartupScript(this.GetType(), "提示", js); } /// <summary> /// 输出自定义脚本信息 /// </summary> /// <param name="page">当前页面指针,一般为this</param> /// <param name="script">输出脚本</param> public void ResponseScript(System.Web.UI.Page page, string script) { page.ClientScript.RegisterStartupScript(this.GetType(), "message", "<script language=‘javascript‘ defer>" + script + "</script>"); } #endregion #region 按字节截取字符串省略 /// <summary> /// 获取字符串长度,中文为两个字符 /// </summary> /// <param name="str">测试的字符串</param> /// <returns></returns> public int GetStrLen(string str) { String pattern = @"[^\x00-\xff]"; string s = Regex.Replace(str, pattern, "aa"); return s.Length; } /// <summary> /// 替换html代码为控件中可见字符 /// </summary> /// <param name="str"></param> /// <returns></returns> public string DecBrSql(string str) { if (str != null && str != "") { str = str.Replace(" ", " "); str = str.Replace("<br>", " "); } return str; } #region 根据指定字符串长度获取字符串 /// <summary> /// 根据指定字符串长度获取字符串 /// </summary> /// <param name="s">要截取的字符串</param> /// <param name="len">字符串长度</param> /// <returns></returns> public string GetStrLen(string s, int len) { string ss = DecBrSql(s); int l = GetStrLen(ss); int i = l / 2; int m = l % 2; if (i > len || (i == len && m > 0)) { return ss.Substring(0, len) + ".."; } else { return ss; } } #endregion #endregion #region 去掉最后一个逗号 /// <summary> /// 去掉最后一个逗号 /// </summary> /// <param name="origin"></param> /// <returns></returns> public string DelLastComma(string origin) { if (origin.IndexOf(",") == -1) { return origin; } if (origin.LastIndexOf(",") + 1 == origin.Length) { return origin.Substring(0, origin.LastIndexOf(",")); } else { return origin; } } public string DelIndexComma(string origin) { if (origin.IndexOf(",") == -1) { return origin; } if (origin.IndexOf(",") == 0) { return origin.Substring(1, origin.Length - 1); } else { return origin; } } public string DelLastCommad(string origin) { if (origin.IndexOf(".") == -1) { return origin; } return origin.Substring(0, origin.LastIndexOf(".")); } #endregion #region 替换html代码为控件中可见字符 public string DecSql(string str) { if (str != null && str != "") { str = str.Replace(" ", " "); str = str.Replace("<br>", "\r\n"); } return str; } #endregion #region 获取拆分符右边的字符串 public string RightSplit(string sourceString, char splitChar) { string result = null; string[] tempString = sourceString.Split(splitChar); if (tempString.Length > 0) { result = tempString[tempString.Length - 1].ToString(); } return result; } #endregion #region 转拼音 /**/ /// <summary> /// 该类提供将指定汉字转化为拼音码、拼音首字母等一些相关方法; /// 如果给定的字符为非中文汉字将不执行转化,直接返回原字符; /// </summary> //编码定义#region 编码定义 private static int[] pyvalue = new int[] { -20319, -20317, -20304, -20295, -20292, -20283, -20265, -20257, -20242, -20230, -20051, -20036, -20032, -20026, -20002, -19990, -19986, -19982, -19976, -19805, -19784, -19775, -19774, -19763, -19756, -19751, -19746, -19741, -19739, -19728, -19725, -19715, -19540, -19531, -19525, -19515, -19500, -19484, -19479, -19467, -19289, -19288, -19281, -19275, -19270, -19263, -19261, -19249, -19243, -19242, -19238, -19235, -19227, -19224, -19218, -19212, -19038, -19023, -19018, -19006, -19003, -18996, -18977, -18961, -18952, -18783, -18774, -18773, -18763, -18756, -18741, -18735, -18731, -18722, -18710, -18697, -18696, -18526, -18518, -18501, -18490, -18478, -18463, -18448, -18447, -18446, -18239, -18237, -18231, -18220, -18211, -18201, -18184, -18183, -18181, -18012, -17997, -17988, -17970, -17964, -17961, -17950, -17947, -17931, -17928, -17922, -17759, -17752, -17733, -17730, -17721, -17703, -17701, -17697, -17692, -17683, -17676, -17496, -17487, -17482, -17468, -17454, -17433, -17427, -17417, -17202, -17185, -16983, -16970, -16942, -16915, -16733, -16708, -16706, -16689, -16664, -16657, -16647, -16474, -16470, -16465, -16459, -16452, -16448, -16433, -16429, -16427, -16423, -16419, -16412, -16407, -16403, -16401, -16393, -16220, -16216, -16212, -16205, -16202, -16187, -16180, -16171, -16169, -16158, -16155, -15959, -15958, -15944, -15933, -15920, -15915, -15903, -15889, -15878, -15707, -15701, -15681, -15667, -15661, -15659, -15652, -15640, -15631, -15625, -15454, -15448, -15436, -15435, -15419, -15416, -15408, -15394, -15385, -15377, -15375, -15369, -15363, -15362, -15183, -15180, -15165, -15158, -15153, -15150, -15149, -15144, -15143, -15141, -15140, -15139, -15128, -15121, -15119, -15117, -15110, -15109, -14941, -14937, -14933, -14930, -14929, -14928, -14926, -14922, -14921, -14914, -14908, -14902, -14894, -14889, -14882, -14873, -14871, -14857, -14678, -14674, -14670, -14668, -14663, -14654, -14645, -14630, -14594, -14429, -14407, -14399, -14384, -14379, -14368, -14355, -14353, -14345, -14170, -14159, -14151, -14149, -14145, -14140, -14137, -14135, -14125, -14123, -14122, -14112, -14109, -14099, -14097, -14094, -14092, -14090, -14087, -14083, -13917, -13914, -13910, -13907, -13906, -13905, -13896, -13894, -13878, -13870, -13859, -13847, -13831, -13658, -13611, -13601, -13406, -13404, -13400, -13398, -13395, -13391, -13387, -13383, -13367, -13359, -13356, -13343, -13340, -13329, -13326, -13318, -13147, -13138, -13120, -13107, -13096, -13095, -13091, -13076, -13068, -13063, -13060, -12888, -12875, -12871, -12860, -12858, -12852, -12849, -12838, -12831, -12829, -12812, -12802, -12607, -12597, -12594, -12585, -12556, -12359, -12346, -12320, -12300, -12120, -12099, -12089, -12074, -12067, -12058, -12039, -11867, -11861, -11847, -11831, -11798, -11781, -11604, -11589, -11536, -11358, -11340, -11339, -11324, -11303, -11097, -11077, -11067, -11055, -11052, -11045, -11041, -11038, -11024, -11020, -11019, -11018, -11014, -10838, -10832, -10815, -10800, -10790, -10780, -10764, -10587, -10544, -10533, -10519, -10331, -10329, -10328, -10322, -10315, -10309, -10307, -10296, -10281, -10274, -10270, -10262, -10260, -10256, -10254 }; private static string[] pystr = new string[] { "a", "ai", "an", "ang", "ao", "ba", "bai", "ban", "bang", "bao", "bei", "ben", "beng", "bi", "bian", "biao", "bie", "bin", "bing", "bo", "bu", "ca", "cai", "can", "cang", "cao", "ce", "ceng", "cha", "chai", "chan" , "chang", "chao", "che", "chen", "cheng", "chi", "chong", "chou", "chu", "chuai", "chuan", "chuang", "chui", "chun", "chuo", "ci", "cong" , "cou", "cu", "cuan", "cui", "cun", "cuo", "da", "dai", "dan", "dang", "dao", "de", "deng", "di", "dian", "diao", "die", "ding", "diu", "dong", "dou", "du", "duan", "dui", "dun", "duo", "e", "en", "er", "fa", "fan", "fang", "fei", "fen", "feng", "fo", "fou", "fu", "ga" , "gai", "gan", "gang", "gao", "ge", "gei", "gen", "geng", "gong", "gou", "gu", "gua", "guai", "guan", "guang", "gui", "gun", "guo", "ha", "hai", "han", "hang", "hao", "he", "hei", "hen", "heng", "hong", "hou", "hu", "hua", "huai", "huan", "huang", "hui", "hun", "huo", "ji", "jia", "jian", "jiang", "jiao", "jie", "jin", "jing", "jiong", "jiu", "ju", "juan", "jue", "jun", "ka", "kai", "kan", "kang", "kao", "ke", "ken", "keng", "kong", "kou", "ku", "kua", "kuai", "kuan", "kuang", "kui", "kun", "kuo", "la", "lai", "lan", "lang", "lao", "le", "lei", "leng", "li", "lia", "lian", "liang", "liao", "lie", "lin", "ling", "liu", "long", "lou", "lu", "lv", "luan", "lue", "lun", "luo", "ma", "mai", "man", "mang", "mao", "me", "mei", "men", "meng", "mi", "mian", "miao", "mie", "min", "ming", "miu", "mo", "mou", "mu", "na", "nai", "nan", "nang", "nao", "ne", "nei", "nen", "neng", "ni", "nian", "niang", "niao", "nie", "nin", "ning", "niu", "nong", "nu", "nv", "nuan", "nue", "nuo", "o", "ou", "pa", "pai", "pan", "pang", "pao", "pei", "pen", "peng", "pi", "pian", "piao", "pie", "pin", "ping", "po", "pu", "qi", "qia", "qian", "qiang", "qiao", "qie", "qin", "qing", "qiong", "qiu", "qu", "quan", "que", "qun", "ran", "rang", "rao", "re", "ren", "reng", "ri", "rong", "rou", "ru", "ruan", "rui", "run", "ruo", "sa", "sai", "san", "sang", "sao", "se", "sen", "seng", "sha", "shai", "shan", "shang", "shao", "she", "shen", "sheng", "shi", "shou", "shu", "shua", "shuai", "shuan", "shuang", "shui", "shun", "shuo", "si", "song", "sou", "su", "suan", "sui", "sun", "suo", "ta", "tai", "tan", "tang", "tao", "te", "teng", "ti", "tian", "tiao", "tie", "ting", "tong", "tou", "tu", "tuan", "tui", "tun", "tuo", "wa", "wai", "wan", "wang", "wei", "wen", "weng", "wo", "wu", "xi", "xia", "xian", "xiang", "xiao", "xie", "xin", "xing", "xiong", "xiu", "xu", "xuan", "xue", "xun", "ya", "yan", "yang", "yao", "ye", "yi", "yin", "ying", "yo", "yong", "you", "yu", "yuan", "yue", "yun", "za", "zai", "zan", "zang", "zao", "ze", "zei", "zen", "zeng", "zha", "zhai" , "zhan", "zhang", "zhao", "zhe", "zhen", "zheng", "zhi", "zhong", "zhou", "zhu", "zhua", "zhuai", "zhuan", "zhuang", "zhui", "zhun", "zhuo", "zi", "zong", "zou", "zu", "zuan", "zui", "zun", "zuo" }; //#endregion /**/ /// <summary> /// 将一串中文转化为拼音 /// 如果给定的字符为非中文汉字将不执行转化,直接返回原字符; /// </summary> /// <param name="chsstr">指定汉字</param> /// <returns>拼音码</returns> public string ChsString2Spell(string chsstr) { string strRet = string.Empty; char[] ArrChar = chsstr.ToCharArray(); foreach (char c in ArrChar) { strRet += SingleChs2Spell(c.ToString()); } return strRet; } /**/ /// <summary> /// 将一串中文转化为拼音 /// </summary> /// <param name="chsstr">指定汉字</param> /// <returns>拼音首字母</returns> public string GetHeadOfChs(string chsstr) { string strRet = string.Empty; char[] ArrChar = chsstr.ToCharArray(); foreach (char c in ArrChar) { strRet += GetHeadOfSingleChs(c.ToString()); } return strRet; } /**/ /// <summary> /// 单个汉字转化为拼音 /// </summary> /// <param name="SingleChs">单个汉字</param> /// <returns>拼音</returns> public string SingleChs2Spell(string SingleChs) { byte[] array; int iAsc; string strRtn = string.Empty; array = Encoding.Default.GetBytes(SingleChs); try { iAsc = (short)(array[0]) * 256 + (short)(array[1]) - 65536; } catch { iAsc = 1; } if (iAsc > 0 && iAsc < 160) return SingleChs; for (int i = (pyvalue.Length - 1); i >= 0; i--) { if (pyvalue[i] <= iAsc) { strRtn = pystr[i]; break; } } //将首字母转为大写 if (strRtn.Length > 1) { strRtn = strRtn.Substring(0, 1).ToUpper() + strRtn.Substring(1); } return strRtn; } /**/ /// <summary> /// 得到单个汉字拼音的首字母 /// </summary> /// <returns></returns> public string GetHeadOfSingleChs(string SingleChs) { return SingleChs2Spell(SingleChs).Substring(0, 1); } #endregion #region CheckBoxList取值及绑定 public string GetCheckBoxList(CheckBoxList CheckBoxList1) { string cblist = ""; for (int i = 0; i < CheckBoxList1.Items.Count; i++) { if (CheckBoxList1.Items[i].Selected == true) { if (cblist == "") { cblist += CheckBoxList1.Items[i].Value; } else { cblist += "," + CheckBoxList1.Items[i].Value; } } } return cblist; } public string GetCheckBoxListTxt(CheckBoxList CheckBoxList1) { string cblist = ""; for (int i = 0; i < CheckBoxList1.Items.Count; i++) { if (CheckBoxList1.Items[i].Selected == true) { if (cblist == "") { cblist += CheckBoxList1.Items[i].Text; } else { cblist += "," + CheckBoxList1.Items[i].Text; } } } return cblist; } public void PutCheckBoxList(CheckBoxList CheckBoxList1, string value) { string[] strTemp = value.Split(‘,‘); foreach (string str in strTemp) { for (int i = 0; i < CheckBoxList1.Items.Count; i++) { if (CheckBoxList1.Items[i].Value == str) { CheckBoxList1.Items[i].Selected = true; } } } } #endregion #region 下载 public void DownFile(System.Web.UI.Page page, string filename) { if (filename != "") { string path = page.Server.MapPath(filename); System.IO.FileInfo file = new System.IO.FileInfo(path); if (file.Exists) { page.Response.Clear(); page.Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name); page.Response.AddHeader("Content-Length", file.Length.ToString()); page.Response.ContentType = "application/octet-stream"; page.Response.Filter.Close(); page.Response.WriteFile(file.FullName); page.Response.End(); } else { ResponseScript(page, "alert(‘文件不存在!‘);window.close();"); } } } #endregion public string GetClientFullPathName(System.Web.UI.Page page, string file) { string FullPathName = ""; WebbUpload m_upload = new WebbUpload(); UploadFile m_file = m_upload.GetUploadFile(file); FullPathName = m_file.ClientFullPathName; return FullPathName; } #endregion public object SubStringByByte(string p) { throw new NotImplementedException(); } } }
时间: 2024-10-12 19:42:39