| http://www.sqlsky.com/ |
|
|
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;
using System.Drawing;
/// <summary>
/// 常用函数库
/// </summary>
///
namespace cpp114.tools.comm
{
public class tools : System.Web.UI.Page
{
private HttpResponse oresponse;
private HttpRequest orequest;
public tools(HttpResponse myResponse, HttpRequest myRequest)
{
this.oResponse = myResponse;//只能这样,其它页面调用Tools类时的Response.write才能响应(本质上讲,请求的是其它页面,而非comm.cs)
this.oRequest = myRequest;
}
/// <summary>
/// 生成缩略图
/// </summary>
/// <param name="originalImagePath">源图路径(物理路径)</param>
/// <param name="thumbnailPath">缩略图路径(物理路径)</param>
/// <param name="width">缩略图宽度</param>
/// <param name="height">缩略图高度</param>
/// <param name="mode">生成缩略图的方式</param>
public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)
{
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
int towidth = width;
int toheight = height;
int x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;
switch (mode)
{
case "HW"://指定高宽缩放(可能变形)
break;
case "W"://指定宽,高按比例
toheight = originalImage.Height * width / originalImage.Width;
break;
case "H"://指定高,宽按比例
towidth = originalImage.Width * height / originalImage.Height;
break;
case "Cut"://指定高宽裁减(不变形)
if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
{
oh = originalImage.Height;
ow = originalImage.Height * towidth / toheight;
y = 0;
x = (originalImage.Width - ow) / 2;
}
else
{
ow = originalImage.Width;
oh = originalImage.Width * height / towidth;
x = 0;
y = (originalImage.Height - oh) / 2;
}
break;
default:
break;
}
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
//新建一个画板
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(originalImage, new Rectangle(0, 0, towidth, toheight),
new Rectangle(x, y, ow, oh),
GraphicsUnit.Pixel);
try
{
//以jpg格式保存缩略图
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (System.Exception e)
{
throw e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}
//自动生成文件名(不含扩展名)
public static string autoFileName()
{
return DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString().PadLeft(2, '0') +
DateTime.Now.Day.ToString().PadLeft(2, '0') + DateTime.Now.Hour.ToString().PadLeft(2, '0') +
DateTime.Now.Minute.ToString().PadLeft(2, '0') + DateTime.Now.Second.ToString().PadLeft(2, '0') +
DateTime.Now.Millisecond.ToString().PadLeft(3, '0');
}
//功能:在虚拟路径virtualpath下创建一个yyyy/mm/dd的三层目录
// 在上传文件,分"年/月/日"目录存放时用到
//返回:创建后的虚拟路径
//编写:杨俊明 Email:yjmyzz@126.com 2006-04-28
public string makeDirByDay(string virturlPath)
{
string sYear = DateTime.Now.Year.ToString();
string sMonth = DateTime.Now.Month.ToString();
string sDay = DateTime.Now.Day.ToString();
string folderName = "";
folderName = Server.MapPath(virturlPath);
folderName.Replace("//", "/");
if (!Directory.Exists(folderName))
{
Directory.CreateDirectory(folderName);
}
folderName = Server.MapPath(virturlPath + "/" + sYear);
folderName.Replace("//", "/");
if (!Directory.Exists(folderName))
{
Directory.CreateDirectory(folderName);
}
folderName = Server.MapPath(virturlPath + "/" + sYear + "/" + sMonth.PadLeft(2, '0'));
folderName.Replace("//", "/");
if (!Directory.Exists(folderName))
{
Directory.CreateDirectory(folderName);
}
folderName = Server.MapPath(virturlPath + "/" + sYear + "/" + sMonth.PadLeft(2, '0') + "/" + sDay.PadLeft(2, '0'));
folderName.Replace("//", "/");
if (!Directory.Exists(folderName))
{
Directory.CreateDirectory(folderName);
}
string returnstr;
returnstr = virturlPath + "/" + sYear + "/" + sMonth.PadLeft(2, '0') + "/" + sDay.PadLeft(2, '0') + "/";
returnstr = returnstr.Replace("//", "/");
return returnstr;
}
//功能:在虚拟路径virtualpath下创建一个yyyy/mm的二层目录
// 在上传文件,分"年/月"目录存放时用到
//返回:创建后的虚拟路径
//编写:杨俊明 Email:yjmyzz@126.com 2006-04-28
public string makeDirByMonth(string virturlPath)
{
string sYear = DateTime.Now.Year.ToString();
string sMonth = DateTime.Now.Month.ToString();
string folderName = "";
folderName = Server.MapPath(virturlPath);
folderName.Replace("//", "/");
if (!Directory.Exists(folderName))
{
Directory.CreateDirectory(folderName);
}
folderName = Server.MapPath(virturlPath + "/" + sYear);
folderName.Replace("//", "/");
if (!Directory.Exists(folderName))
{
Directory.CreateDirectory(folderName);
}
folderName = Server.MapPath(virturlPath + "/" + sYear + "/" + sMonth.PadLeft(2, '0'));
folderName.Replace("//", "/");
if (!Directory.Exists(folderName))
{
Directory.CreateDirectory(folderName);
}
string returnstr;
returnstr = virturlPath + "/" + sYear + "/" + sMonth.PadLeft(2, '0') + "/";
returnstr = returnstr.Replace("//", "/");
return returnstr;
}
//功能:在虚拟路径virtualpath下创建一个yyyy的目录
// 在上传文件,分"年"目录存放时用到
//返回:创建后的虚拟路径
//编写:杨俊明 Email:yjmyzz@126.com 2006-04-28
public string makeDirByYear(string virturlPath)
{
string sYear = DateTime.Now.Year.ToString();
string sMonth = DateTime.Now.Month.ToString();
string folderName = "";
folderName = Server.MapPath(virturlPath);
folderName.Replace("//", "/");
if (!Directory.Exists(folderName))
{
Directory.CreateDirectory(folderName);
}
folderName = Server.MapPath(virturlPath + "/" + sYear);
folderName.Replace("//", "/");
if (!Directory.Exists(folderName))
{
Directory.CreateDirectory(folderName);
}
string returnstr;
returnstr = virturlPath + "/" + sYear + "/";
returnstr = returnstr.Replace("//", "/");
return returnstr;
}
//返回一个alert对话框的html字符串
//示例: Response.Write(Alert("登录成功!"),"index.aspx")
public void Alert(string str, string url)
{
if (url == "")
{
oresponse.Write("<script>alert('" + str + "')</script>");
}
else
{
oresponse.Write("<script>alert('" + str + "');window.location='" + url + "'</script>");
}
}
public static string getSafeStr(string str)
{
str = str.Replace("'", "");
str = str.Replace(";", "");
str = str.Replace("=", "");
str = str.Replace("--", "");
return str;
}
//去掉html代码
public static string noHtml(string str, int strlen)
{
//去除html代码后,再截取
Regex re = new Regex("<(.[^>]*)>");
str = re.Replace(str, "");
return cutStr(str, strlen);
}
//过滤html中的指定标签,多个标签用,分隔,比如script,object(这也是默认值)
public static string superFilter(string html, string filter)
{
filter = filter.Trim();
if (filter == "")
{
filter = "script,object,iframe,frame";
}
string[] strs = filter.Split(',');
for (int i = 0; i < strs.Length; i++)
{
html = filterHtml(html, strs[i]);
}
return html;
}
//功能:过滤html代码中的指定标记
//参数:html----要处理的html内容
// filter--要处理的标记(如"SCRIPT")
protected static string filterHtml(string html, string filter)
{
switch (filter.ToUpper())
{
// 去除所有客户端脚本javascipt,vbscript,jscript,js,vbs,event,...
case "SCRIPT":
html = RegExec(html, "</?script[^>]*>");
html = RegExec(html, "(javascript|jscript|vbscript|vbs):");
html = RegExec(html, "on(mouse|exit|error|click|key)");
html = RegExec(html, "&#");
break;
//去除Object对象,比如flash
case "OBJECT":
html = RegExec(html, "</?object[^>]*>");
html = RegExec(html, "</?param[^>]*>");
html = RegExec(html, "</?embed[^>]*>");
break;
//去除img图象标签
case "IMG":
html = RegExec(html, "</?img[^>]*>");
break;
//去除FONT标签
case "FONT":
html = RegExec(html, "</?font[^>]*>");
break;
//去除跑马灯效果
case "MARQUEE":
html = RegExec(html, "</?marquee[^>]*>");
break;
//去除表格<table><tr><td><th>
case "TABLE":
html = RegExec(html, "</?table[^>]*>");
html = RegExec(html, "</?tr[^>]*>");
html = RegExec(html, "</?th[^>]*>");
html = RegExec(html, "</?td[^>]*>");
break;
//去除段落标记
case "P":
html = RegExec(html, "</?p[^>]*>");
break;
//去除超级链接标记
case "A":
html = RegExec(html, "</?a[^>]*>");
break;
//去除iframe
case "IFRAME":
html = RegExec(html, "</?iframe[^>]*>");
break;
//去除frame
case "FRAME":
html = RegExec(html, "</?frame[^>]*>");
break;
//默认去除所有的html标记
default:
html = RegExec(html, "<(.[^>]*)>");
break;
}
return html;
}
private static string RegExec(string src, string regExpress)
{
Regex re = new Regex(regExpress, RegexOptions.IgnoreCase);
src = re.Replace(src, "");
return src;
}
//截取字符串
public static string cutStr(string inputString, int len)
{
ASCIIEncoding ascii = new ASCIIEncoding();
int tempLen = 0;
string tempString = "";
byte[] s = ascii.GetBytes(inputString);
for (int i = 0; i < s.Length; i++)
{
if ((int)s[i] == 63)
{
tempLen += 2;
}
else
{
tempLen += 1;
}
try
{
tempString += inputString.Substring(i, 1);
}
catch
{
break;
}
if (tempLen > len)
break;
}
//如果截过则加上半个省略号
byte[] mybyte = System.Text.Encoding.Default.GetBytes(inputString);
if (mybyte.Length > len)
tempString += "…";
return tempString;
}
//功能:显示分页导航
//参数:totalCount--总记录数
// totalPage---总页数
// pageNumber--导航栏上显示多少个分页链接
// myPageSize--每页记录数
// Page--------当前页数
// Style----如果为text,则显示页码跳转输入文本框
//编写:杨俊明 2006-04-27
public string showPage(int totalCount, int totalPage, int pageNumber, int myPageSize, int Page, string Style)
{
string url, parm, returnstr;
int i, s_mid;
url = "";
parm = "";
i = 0;
s_mid = 0;
if (totalPage <= 1) { return ""; }
if (Page < 1) { Page = 1; }
if (Page > totalPage) { Page = totalPage; }
if (Style.Trim() == "") { Style = "none"; }
url = orequest.ServerVariables["url"];
parm = orequest.ServerVariables["Query_String"];
parm = delParm(parm, "page");
if (parm != "")
{
url = url + "?" + parm + "&";
}
else
{
url = url + "?";
}
returnstr = "";
returnstr = "<table width='100%' align=center border=0 cellpadding=0 celspacing=0><tr><td align=left>共有<font color=red>" + Convert.ToInt32(totalCount) + "</font>条,第<font color=red>" + Convert.ToInt32(Page) + "</font>页/共<font color=red>" + Convert.ToInt32(totalPage) + "</font>页,<font color=red>" + Convert.ToInt32(myPageSize) + "</font>/每页</td><td align=right>";
//处理首页问题
if (Page > 1)
{
returnstr += "<a href='" + url + "page=1' title='首页'>";
returnstr += "<img src='./images/first.gif' align=absmiddle border=0></a>";
}
s_mid = 0;
s_mid = Convert.ToInt32(pageNumber / 2);
if (pageNumber % 2 != 0)
{
s_mid = s_mid + 1;
}
//处理中间页码的生成
if ((Page <= totalPage) && (Page >= s_mid))
{
for (i = Page - s_mid + 1; i <= Page - s_mid + pageNumber; i++)
{
if (i <= totalPage)
{
if (i == Page)
{
returnstr += " <font color=red>[" + Convert.ToInt32(i) + "]</font>";
}
else
{
returnstr += " <a href='" + url + "page=" + Convert.ToInt32(i) + "'>" + Convert.ToInt32(i) + "</a>";
}
}
}
}
//第一页时的中间页码生成问题
if ((Page >= 1) && (Page < s_mid))
{
for (i = 1; i <= pageNumber; i++)
{
if (i <= totalPage)
{
if (i == Page)
{
returnstr += " <font color=red>[" + Convert.ToInt32(i) + "]</font>";
}
else
{
returnstr += " <a href='" + url + "page=" + Convert.ToInt32(i) + "'>" + Convert.ToInt32(i) + "</a>";
}
}
}
}
//不是最后一页
if (Page < totalPage)
{
returnstr += " <a href='" + url + "page=" + totalPage + "' title='尾页'>";
returnstr += "<img src='./images/last.gif' align=absmiddle border=0></a>";
}
returnstr += "</td>";
if (Style == "text")
{
if ((url.Substring(url.Length - 1, 1) == "?") || (url.Substring(url.Length - 1, 1) == "&"))
{
url = url.Substring(0, url.Length - 1);
}
returnstr += "<td width=40 align=right><input runat=server size=1 name='page' id='page' value='" + Page + "' style='border:1px inset #808080; font-size: 9pt'></td></tr></table>";
}
else
{
returnstr += "</tr></table>";
}
//oResponse.Write(returnstr);
return returnstr;
}
//删除网页参数中的指定项
//delParm("abc=3&name=jimmy&sex=male","name") 结果为abc=3&sex=male
public static string delParm(string parm, string delpart)
{
int i = 0;
string parmFront, parmBack, returnstr;
parmFront = "";
parmBack = "";
returnstr = "";
//returnstr = "<br>";
//returnstr = parm;
i = parm.IndexOf(delpart);
if (i != -1)
{
if (i > 1)
{
parmFront = parm.Substring(0, i - 1);
}
else
{
parmFront = "";
}
parm = parm.Substring(i, parm.Length - i);
//returnstr += "<br>parmFront : <br> " + parmFront;
//returnstr += "<br>parm : <br> " + parm;
i = parm.IndexOf("&");
if (i != -1)
{
parmBack = parm.Substring(i + 1, parm.Length - i - 1);
}
else
{
parmBack = "";
}
//returnstr += "<br>parmBack : <br> " + parmBack;
}
else
{
returnstr = parm;
}
if ((parmFront != "") && (parmBack != ""))
{
returnstr = parmFront + "&" + parmBack;
}
else
{
returnstr = parmFront + parmBack;
}
return returnstr;
}
}
}
引用该cs时,可以这样写
using cpp114.tools.comm;