一个生成不重复随机数的方法
//生成不重复随机数算法
private int GetRandomNum(int i,int length,int up,int down)
{
int iFirst=0;
Random ro=new Random(i*length*unchecked((int)DateTime.Now.Ticks));
iFirst=ro.Next(up,down);
return iFirst;
}
发表于 @ 2005年12月30日 3:44 PM | 评论 (0)
ASP.NET多文件上传方法
前台代码
后台代码
protected System.Web.UI.WebControls.Button UploadButton;
protected System.Web.UI.WebControls.Label strStatus;
private void Page_Load(object sender, System.EventArgs e)
{
/// 在此处放置用户代码以初始化页面
if (this.IsPostBack) this.SaveImages();
}
private Boolean SaveImages()
{
///'遍历File表单元素
HttpFileCollection files = HttpContext.Current.Request.Files;
/// '状态信息
System.Text.StringBuilder strMsg = new System.Text.StringBuilder();
strMsg.Append("上传的文件分别是:
");
try
{
for(int iFile = 0; iFile < files.Count; iFile++)
{
///'检查文件扩展名字
HttpPostedFile postedFile = files[iFile];
string fileName,fileExtension,file_id;
//取出精确到毫秒的时间做文件的名称
int year = System.DateTime.Now.Year;
int month = System.DateTime.Now.Month;
int day = System.DateTime.Now.Day;
int hour = System.DateTime.Now.Hour;
int minute = System.DateTime.Now.Minute;
int second = System.DateTime.Now.Second;
int millisecond = System.DateTime.Now.Millisecond;
string my_file_id = year.ToString() + month.ToString() + day.ToString() + hour.ToString() + minute.ToString() + second.ToString() + millisecond.ToString()+iFile.ToString();
fileName = System.IO.Path.GetFileName(postedFile.FileName);
fileExtension = System.IO.Path.GetExtension(fileName);
file_id = my_file_id+fileExtension;
if (fileName != "")
{
fileExtension = System.IO.Path.GetExtension(fileName);
strMsg.Append("上传的文件类型:" + postedFile.ContentType.ToString() + "
");
strMsg.Append("客户端文件地址:" + postedFile.FileName + "
");
strMsg.Append("上传文件的文件名:" + file_id + "
");
strMsg.Append("上传文件的扩展名:" + fileExtension + "
");
postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("images/") + file_id);
}
}
strStatus.Text = strMsg.ToString();
return true;
}
catch(System.Exception Ex)
{
strStatus.Text = Ex.Message;
return false;
}
}
发表于 @ 2005年12月30日 3:37 PM | 评论 (0)
邮件系统使用的上传附件方法
前台HTML代码
后台CS代码
public class Upload_Mail : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Upload;
protected System.Web.UI.WebControls.DropDownList dlistBound;
protected System.Web.UI.WebControls.TextBox P_size;
protected System.Web.UI.WebControls.Button btnDel;
protected System.Web.UI.HtmlControls.HtmlInputFile myFile;
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
//没有附件的状态
dlistBound.Items.Clear();
ArrayList arr = new ArrayList();
arr.Add("--没有附件--");
dlistBound.DataSource = arr ;
dlistBound.DataBind();
P_size.Text = "0";
}
}
private void Upload_Click(object sender, System.EventArgs e)
{
if(myFile.PostedFile !=null)
{
HttpFileCollection files = HttpContext.Current.Request.Files;
HttpPostedFile postedFile = files[0];
string fileName = System.IO.Path.GetFileName(postedFile.FileName);
string path = Request.PhysicalApplicationPath+@"UploadMail\"+ fileName;
postedFile.SaveAs(path);
//数组对上存附件进行实时绑定
if((string)Session["udMail"]==null)
{
Session["udMail"] = fileName;
}
else
{
Session["udMail"] = (string)Session["udMail"]+"|"+fileName;
}
string[] udMail = Session["udMail"].ToString().Split('|');
ArrayList list = new ArrayList(udMail);
list.Reverse();
udMail=(string[])list.ToArray(typeof(string));
dlistBound.Items.Clear();
long dirsize=0;
for(int i = 0;i
string IndexItem = udMail[i];
string VauleItem = Request.PhysicalApplicationPath+@"UploadMail\"+udMail[i];
dlistBound.Items.Add(new ListItem(IndexItem,VauleItem));
System.IO.FileInfo mysize = new System.IO.FileInfo(@VauleItem);
dirsize += System.Convert.ToInt32(mysize.Length/1024)+1;
}
P_size.Text = dirsize.ToString();
}
}
private void btnDel_Click(object sender, System.EventArgs e)
{
string trueDelfile = dlistBound.SelectedValue.ToString();
string Delfile = dlistBound.SelectedItem.ToString();
usageIO.DeletePath(trueDelfile);
if(Session["udMail"] != null)
{
int index = Session["udMail"].ToString().IndexOf("|");
if(index == -1)
{
Session["udMail"] = null;
dlistBound.Items.Clear();
dlistBound.Items.Add("--没有附件--");
P_size.Text = "0";
}
else
{
string[] udMail = Session["udMail"].ToString().Split('|');
ArrayList values = new ArrayList(udMail);
values.Remove(Delfile);
string s = null;
for(int i=0;i
if(values.Count!=0)
{
s += values[i].ToString()+"|";
}
}
if(s!=""||s!=null)
{
s = s.TrimEnd('|');
}
Session["udMail"] = s;
string[] uMail = Session["udMail"].ToString().Split('|');
ArrayList list = new ArrayList(uMail);
list.Reverse();
uMail=(string[])list.ToArray(typeof(string));
dlistBound.Items.Clear();
long dirsize=0;
for(int i = 0;i
string IndexItem = uMail[i];
string VauleItem = Request.PhysicalApplicationPath+@"UploadMail\"+uMail[i];
dlistBound.Items.Add(new ListItem(IndexItem,VauleItem));
System.IO.FileInfo mysize = new System.IO.FileInfo(@VauleItem);
dirsize += System.Convert.ToInt32(mysize.Length/1024)+1;
}
P_size.Text = dirsize.ToString();
}
}
}
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/**////
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
///
private void InitializeComponent()
{
this.Upload.Click += new System.EventHandler(this.Upload_Click);
this.btnDel.Click += new System.EventHandler(this.btnDel_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
发表于 @ 2005年12月30日 3:29 PM | 评论 (0)
上传图片并且生成可以控制大小图片清晰度的方法
private void Upload_Click(object sender, System.EventArgs e)
{
if(myFile.PostedFile !=null)
{
// 检查文件扩展名字
HttpFileCollection files = HttpContext.Current.Request.Files;
HttpPostedFile postedFile = files[0];
string fileName,fileExtension,file_id,file_path;
//取出精确到毫秒的时间做文件的名称
int year = System.DateTime.Now.Year;
int month = System.DateTime.Now.Month;
int day = System.DateTime.Now.Day;
int hour = System.DateTime.Now.Hour;
int minute = System.DateTime.Now.Minute;
int second = System.DateTime.Now.Second;
int millisecond = System.DateTime.Now.Millisecond;
string my_file_id = year.ToString() + month.ToString() + day.ToString() + hour.ToString() + minute.ToString() + second.ToString() + millisecond.ToString();
//获得文件类型
fileName = System.IO.Path.GetFileName(postedFile.FileName);
fileExtension = System.IO.Path.GetExtension(fileName);
//重新命名文件,防止重复
file_id = "topnews_"+my_file_id+fileExtension;
file_path = "images/article_images/"+file_id;
//文件上传到服务器的根目录
postedFile.SaveAs(Request.PhysicalApplicationPath+@"images\article_images\"+ file_id);
//处理图片大小
int width,height,level;
width=120;
height=90;
level=100;//从1-100
GetThumbnailImage(width,height,level,file_id);
}
}
//生成缩略图函数
public void GetThumbnailImage(int width,int height,int level,string file_id)
{
string newfile= Request.PhysicalApplicationPath+"images/article_images/"+"top_"+ file_id;
System.Drawing.Image oldimage = System.Drawing.Image.FromFile(Request.PhysicalApplicationPath+"images/article_images/"+ file_id);
System.Drawing.Image thumbnailImage = oldimage.GetThumbnailImage(width, height,new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
Bitmap output=new Bitmap(thumbnailImage);
//处理JPG质量的函数
ImageCodecInfo[] codecs=ImageCodecInfo.GetImageEncoders();
ImageCodecInfo ici=null;
foreach(ImageCodecInfo codec in codecs){if(codec.MimeType=="image/jpeg")ici=codec;}
EncoderParameters ep=new EncoderParameters();
ep.Param[0]=new EncoderParameter(Encoder.Quality,(long)level);
output.Save(newfile,ici,ep);
//释放所有使用对象
ep.Dispose();
output.Dispose();
oldimage.Dispose();
thumbnailImage.Dispose();
//删除源图片
string file_path = "images/article_images/"+"top_"+file_id;
usageIO.DeletePath(Request.PhysicalApplicationPath+"images/article_images/"+ file_id);
Response.Write("");
}
bool ThumbnailCallback()
{
return false;
}
发表于 @ 2005年12月30日 3:25 PM | 评论 (0)
生成高清晰度的缩略图[方法1]
public void pic_zero(string sourcepath,string aimpath,int scale)
{
string originalFilename =sourcepath;
//生成的高质量图片名称
string strGoodFile =aimpath;
//从文件取得图片对象
System.Drawing.Image image = System.Drawing.Image.FromFile(originalFilename);
int iImgWidth = image.Width;
int iImgHeight = image.Height;
int iScale = (iImgWidth / scale)>(iImgHeight/scale) ? (iImgWidth / scale) : (iImgHeight / scale);
//取得图片大小
System.Drawing.Size size = new Size(image.Width / iScale , image.Height / iScale);
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(size.Width,size.Height);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空一下画布
g.Clear(Color.Blue);
//在指定位置画图
g.DrawImage(image, new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height),
new System.Drawing.Rectangle(0, 0, image.Width,image.Height),
System.Drawing.GraphicsUnit.Pixel);
//保存高清晰度的缩略图
bitmap.Save(strGoodFile, System.Drawing.Imaging.ImageFormat.Jpeg);
g.Dispose();
}
发表于 @ 2005年12月30日 3:23 PM | 评论 (0)
比较完美的图片验证码
需要引用的名字空间
using System.IO;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
public class ValidationCodeImg : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
this.CreateCheckCodeImage(GenerateCheckCode());
}
private string GenerateCheckCode()
{
int number;
char code;
string checkCode = String.Empty;
System.Random random = new Random();
for(int i=0; i<5; i++)
{
number = random.Next();
if(number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('0' + (char)(number % 10));
checkCode += code.ToString();
}
Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));
return checkCode;
}
private void CreateCheckCodeImage(string checkCode)
{
if(checkCode == null || checkCode.Trim() == String.Empty)
return;
System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 24);
Graphics g = Graphics.FromImage(image);
try
{
//生成随机生成器
Random random = new Random();
//清空图片背景色
g.Clear(Color.White);
//画图片的背景噪音线
for(int i=0; i<2; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
}
Font font = new System.Drawing.Font("Tahoma", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Black, Color.Black, 1.2f, true);
g.DrawString(checkCode, font, brush, 2, 2);
//画图片的前景噪音点
for(int i=0; i<100; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//画图片的边框线
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}
发表于 @ 2005年12月30日 3:09 PM | 评论 (0)
IE订单的打印处理办法
在一个商城项目应用中我需要把客户在网上下的订单使用IE打印出来
首先必须控制订单不能出现IE的页眉页脚(需要使用ScriptX)
然后主要是控制订单数据输出用什么办法显示出来,为了灵活的控制输出效果,我这里使用的是循环读入数据(定购的商品)的办法(下面的代码是我使用的)
public string myOrder(string B_No)
{
doData.conn.Open();
string strFirstMenu =null;
string strSql = "select Items_Type,Items_Name,Items_Unit,Items_Count,Items_Price from [OrderItems] where Order_No = '"+B_No+"' order by ID desc";
SqlDataAdapter da = new SqlDataAdapter(strSql,doData.conn);
DataSet ds = new DataSet();
da.Fill(ds,"myOrder");
int count = ds.Tables[0].Rows.Count;
string Items_Type,Items_Name,Items_Price,Items_Count,Items_Unit,Items_TotalPrice;
Double Items_AllTotalPrice = 0;
int Items_TotalCount = 0;
string begin = "
商品编号 | 商品名称 | 单位 | 数量 | 单价(元) | 金额(元) |
"+Items_Type+" | "+Items_Name+" | "+Items_Unit+" | "+Items_Count+" | "+Items_Price+" | "+Items_TotalPrice+" |
doData.conn.Close();
return FirstMenu;
}
发表于 @ 2005年12月30日 3:06 PM | 评论 (0)
URL传输参数加密解密
最近做一个论坛入口时要实现帐号和密码不在IE地址栏出现而做的
index.aspx.cs (加密处理)
Byte[] Iv64={11, 22, 33, 44, 55, 66, 77, 85};
Byte[] byKey64={10, 20, 30, 40, 50, 60, 70, 80};
public string Encrypt(string strText)
{
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
Byte[] inputByteArray = Encoding.UTF8.GetBytes(strText);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey64, Iv64), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
catch(Exception ex)
{
return ex.Message;
}
}
private void btnLogin_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
DateTime nowTime = DateTime.Now;
string postUser = txtUser.Text.ToString();
string postPass = txtPassword.Text.ToString();
Response.Redirect("Login.aspx?clubID="+Encrypt(postUser+","+postPass+","+nowTime.ToString()));
}
login.aspx.cs (解密处理)
//随机选8个字节既为密钥也为初始向量
Byte[] byKey64={10, 20, 30, 40, 50, 60, 70, 80};
Byte[] Iv64={11, 22, 33, 44, 55, 66, 77, 85};
public string Decrypt(string strText)
{
Byte[] inputByteArray = new byte[strText.Length];
try
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
inputByteArray = Convert.FromBase64String(strText);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey64, Iv64), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
System.Text.Encoding encoding = System.Text.Encoding.UTF8;
return encoding.GetString(ms.ToArray());
}
catch(Exception ex)
{
return ex.Message;
}
}
private void Page_Load(object sender, System.EventArgs e)
{
if(Request.Params["clubID"]!=null)
{
string originalValue = Request.Params["clubID"];
originalValue = originalValue.Replace(" ","+");
//+号通过url传递变成了空格。
string decryptResult = Decrypt(originalValue);
//DecryptString(string)解密字符串
string delimStr = ",";
char[] delimiterArray = delimStr.ToCharArray();
string [] userInfoArray = null;
userInfoArray = decryptResult.Split(delimiterArray);
string userName = userInfoArray[0];
User userToLogin = new User();
userToLogin.Username = userInfoArray[0];
userToLogin.Password = userInfoArray[1];
......
}
}