upload.aspx
<% @ Page CodeBehind = " upload.aspx.cs " Language = " c# " AutoEventWireup = " false " Inherits = " playershow.upload " %> <! DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN " " http://www.w3.org/TR/html4/loose.dtd " > < HTML > < HEAD > < title > 上传 </ title > < meta http - equiv = " Content-Type " content = " text/html; charset=gb2312 " > </ HEAD > < body > < form runat = " server " > < table width = " 415 " border = " 0 " align = " center " cellpadding = " 1 " cellspacing = " 1 " > < tr > < td height = " 20 " rowspan = " 2 " align = " left " > 截图上传 : </ td > < td height = " 25 " >& nbsp; < INPUT id = " MyFile " type = " file " size = " 34 " name = " MyFile " runat = " server " ></ td > </ tr > < tr > < td >< span class = " style5 " > [尺寸必须为宽400×300像素;图片大小300K以内] </ span ></ td > </ tr > < tr > < td height = " 20 " colspan = " 2 " align = " left " valign = " top " >< div align = " center " > < asp:ImageButton id = " ImageButton1 " runat = " server " ImageUrl = " images/frame-08.gif " ></ asp:ImageButton ></ div > </ td > </ tr > </ table > </ form > </ TBODY ></ TABLE > </ body > </ HTML >
upload.aspx.cs
using System; using System.Collections; using System.ComponentModel; using System.Web.UI.HtmlControls; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Web; using System.Configuration; using System.IO; using System.Data.SqlClient; namespace playershow ... { /**//// <summary> /// screenshots_upload 的摘要说明。 /// </summary> public class screenshots_upload : System.Web.UI.Page ...{ protected System.Web.UI.WebControls.RadioButtonList DbArea; protected System.Web.UI.HtmlControls.HtmlInputFile MyFile; protected System.Web.UI.WebControls.TextBox PhotoRemark; protected System.Web.UI.WebControls.ImageButton ImageButton1; protected System.Web.UI.WebControls.RadioButtonList PicXiaoType; protected System.Web.UI.WebControls.TextBox PhotoTitle; private void Page_Load(object sender, System.EventArgs e) ...{ } Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码 override protected void OnInit(EventArgs e) ...{ // // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /**//// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() ...{ this.ImageButton1.Click += new System.Web.UI.ImageClickEventHandler(this.ImageButton1_Click); this.Load += new System.EventHandler(this.Page_Load); } #endregion private void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e) ...{ string FileName; FileName=""; if (!upimgtoserver(MyFile,ref FileName)) ...{ string jsClient = "<script language=javascript>alert('"+FileName+"');</script>"; this.RegisterStartupScript("s1",jsClient); return; } else ...{ return; } } /**//// <summary> /// 文件上传函数 /// </summary> /// <param name="file">文件控件的名称</param> private bool upimgtoserver(HtmlInputFile file ,ref string FileName) ...{ string FilePath =file.PostedFile.FileName; if(FilePath == "" || FilePath == null) ...{ FileName="请选择一个文件。"; return false; } if (!filetype(file.PostedFile.ContentType)) ...{ FileName="您上传的文件类型无效,支持的上传文件类型:jpg,jpeg,gif,bmp,png,tiff"; return false; } int intLen=file.PostedFile.ContentLength; if(intLen>1240*300) ...{ FileName="您上传的文件超过300K,请您重新上传"; return false; } //保存到服务器上的绝对路径和文件名 try ...{ addml(); FileName=fliename(); Stream ImageStream = file.PostedFile.InputStream; Image sImage = Image.FromStream(ImageStream); // 从 Http 输入流创建 image int kkkk=0; string syt="UPimg/logo2.png"; if(sImage.Height/sImage.Width<=0.75) ...{ if (sImage.Height>=240) ...{ kkkk=1; } } else ...{ if(sImage.Width>=320) ...{ kkkk=1; } } if (kkkk==1) ...{ syt="UPimg/logo.png"; } string wImageFile = Server.MapPath(syt); // 要加的水印图 Image wImage = Image.FromFile(wImageFile); // 绘图 Bitmap bitmap = new Bitmap(sImage.Width, sImage.Height, PixelFormat.Format32bppArgb); Graphics g = Graphics.FromImage(bitmap); g.Clear(Color.Transparent); g.DrawImage(sImage, new Rectangle(0, 0, sImage.Width, sImage.Height)); //Graphics g = Graphics.FromImage(sImage); g.DrawImage(wImage, new Rectangle(sImage.Width-wImage.Width, sImage.Height-wImage.Height, wImage.Width, wImage.Height),0, 0, wImage.Width, wImage.Height, GraphicsUnit.Pixel); // 保存,并将 image 转化为 byte[] MemoryStream ms=new MemoryStream(); bitmap.Save(ms, ImageFormat.Jpeg); FileName=fliename()+".jpg"; ms.GetBuffer(); FileStream f = new FileStream(Server.MapPath("upImg/daPic") + "/" + FileName, FileMode.Create); /**////把内内存里的数据写入物理文件 ms.WriteTo(f); ms.Close(); f.Close(); f = null; ms = null; bitmap.Dispose(); Bitmap bitmap2 = new Bitmap(120, 90, PixelFormat.Format32bppArgb); Graphics g2 = Graphics.FromImage(bitmap2); g2.Clear(Color.Transparent); g2.DrawImage(sImage, new Rectangle(0, 0, 120, 90)); MemoryStream ms2=new MemoryStream(); bitmap2.Save(ms2, ImageFormat.Jpeg); ms2.GetBuffer(); FileStream f2 = new FileStream(Server.MapPath("upImg/xiaoPic") + "/" + FileName, FileMode.Create); /**////把内内存里的数据写入物理文件 ms2.WriteTo(f2); ms2.Close(); f2.Close(); f2 = null; ms2 = null; bitmap2.Dispose(); sImage.Dispose(); return true; } catch(Exception ex) ...{ FileName =ex.ToString(); } return false; } /**//// <summary> /// 返回一个带有路径的文件名 /// </summary> /// <returns>返回一个字符串</returns> private string fliename() ...{ DateTime now =DateTime.Now; string ml=now.ToString("yyyyMMdd"); string newname=now.ToString("yyyyMMddhhmmss"); string lmname=now.ToString("yyyy-MM"); Random a =new Random(); int s=Convert.ToInt32(a.NextDouble()*100000+100000); return lmname+"/"+newname+ s.ToString(); } /**//// <summary> /// 判断目录是否存在 /// 如果不存在则创建目录; /// </summary> private void addml() ...{ DateTime now =DateTime.Now; string lmname=now.ToString("yyyy-MM"); if (!Directory.Exists(Server.MapPath("upImg/xiaoPic")+"/"+lmname)) ...{ Directory.CreateDirectory(Server.MapPath("upImg/xiaoPic")+"/"+lmname); } if (!Directory.Exists(Server.MapPath("upImg/daPic")+"/"+lmname)) ...{ Directory.CreateDirectory(Server.MapPath("upImg/daPic")+"/"+lmname); } } private bool filetype(string type) ...{ bool s=false; string[] wjlx=...{"image/jpeg","image/pjpeg","image/png","image/tiff","image/gif","image/bmp"}; for(int i=0;i<= wjlx.Length-1;i++) ...{ if (wjlx[i]==type) ...{ s=true; break; } } return s; } }}