上传 文件类型判断 缩略图实现
2009-09-22 10:16
465 查看
页面:
后台:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="image.aspx.cs" Inherits="image" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:FileUpload ID="UploadFile" runat="server" /> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="上传" /> <br /> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button" /> <br /> </div> </form> </body> </html>
后台:
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.Drawing; using System.IO; public partial class image : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { //检查上传文件的格式是否有效 if (this.UploadFile.PostedFile.ContentType.ToLower().IndexOf("image") < 0) { Response.Write("上传图片格式无效!"); return; } //生成原图 Byte[] oFileByte = new byte[this.UploadFile.PostedFile.ContentLength]; System.IO.Stream oStream = this.UploadFile.PostedFile.InputStream; System.Drawing.Image oImage = System.Drawing.Image.FromStream(oStream); int oWidth = oImage.Width; //原图宽度 int oHeight = oImage.Height; //原图高度 int tWidth = 200; //设置缩略图初始宽度 int tHeight = 200; //设置缩略图初始高度 //按比例计算出缩略图的宽度和高度 if (oWidth >= oHeight) { tHeight = (int)Math.Floor(Convert.ToDouble(oHeight) * (Convert.ToDouble(tWidth) / Convert.ToDouble(oWidth))); } else { tWidth = (int)Math.Floor(Convert.ToDouble(oWidth) * (Convert.ToDouble(tHeight) / Convert.ToDouble(oHeight))); } //生成缩略原图 Bitmap tImage = new Bitmap(tWidth, tHeight); Graphics g = Graphics.FromImage(tImage); g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量插值法 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//设置高质量,低速度呈现平滑程度 g.Clear(Color.Transparent); //清空画布并以透明背景色填充 g.DrawImage(oImage, new Rectangle(0, 0, tWidth, tHeight), new Rectangle(0, 0, oWidth, oHeight), GraphicsUnit.Pixel); string oFullName = Server.MapPath(".") + "/image/" + "o" + DateTime.Now.ToShortDateString().Replace("-", "") + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg"; //保存原图的物理路径 string tFullName = Server.MapPath(".") + "/image/" + "t" + DateTime.Now.ToShortDateString().Replace("-", "") + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg"; //保存缩略图的物理路径 try { //以JPG格式保存图片 string urlfile=Server.MapPath(".") + "/image/"; if( !Directory.Exists( urlfile)) Directory.CreateDirectory(urlfile); oImage.Save(oFullName, System.Drawing.Imaging.ImageFormat.Jpeg); tImage.Save(tFullName, System.Drawing.Imaging.ImageFormat.Jpeg); } catch (Exception ex) { throw ex; } finally { //释放资源 oImage.Dispose(); g.Dispose(); tImage.Dispose(); } } protected void Button2_Click(object sender, EventArgs e) { FileExtension[] fe = { FileExtension.GIF, FileExtension.JPG, FileExtension.PNG }; if (!FileValidation.IsAllowedExtension(FileUpload1, fe)) { Response.Write("文件格式有误"); return; } string filename = this.FileUpload1.PostedFile.FileName; string savepath = Server.MapPath(".") + "/upload/"; if (!Directory.Exists(savepath)) Directory.CreateDirectory(savepath); string UploadFileExecName = filename.Substring(filename.LastIndexOf(".") + 1);//得到文件的扩展名 Random rd = new Random();//产生随机数 int valationNo = 10 + rd.Next(99);//产生随机数 string suiji = valationNo.ToString();//产生随机数 string UpLoadFileTime = DateTime.Now.ToString("yyyyMMHHmmss") + suiji;//得到系统时间并加上随机数以便生成上传图片名称 string NewUploadFileName = UpLoadFileTime + "." + UploadFileExecName;//产生上传图片的名称 this.FileUpload1.PostedFile.SaveAs(savepath + NewUploadFileName); } public enum FileExtension { JPG = 255216, GIF = 7173, PNG = 13780, SWF = 6787, RAR = 8297, ZIP = 8075, _7Z = 55122 // 255216 jpg; // 7173 gif; // 6677 bmp, // 13780 png; // 6787 swf // 7790 exe dll, // 8297 rar // 8075 zip // 55122 7z // 6063 xml // 6033 html // 239187 aspx // 117115 cs // 119105 js // 102100 txt // 255254 sql } public class FileValidation { public static bool IsAllowedExtension(FileUpload fu, FileExtension[] fileEx) { int fileLen = fu.PostedFile.ContentLength; byte[] imgArray = new byte[fileLen]; fu.PostedFile.InputStream.Read(imgArray, 0, fileLen); MemoryStream ms = new MemoryStream(imgArray); System.IO.BinaryReader br = new System.IO.BinaryReader(ms); string fileclass = ""; byte buffer; try { buffer = br.ReadByte(); fileclass = buffer.ToString(); buffer = br.ReadByte(); fileclass += buffer.ToString(); } catch { } br.Close(); ms.Close(); foreach (FileExtension fe in fileEx) { if (Int32.Parse(fileclass) == (int)fe) return true; } return false; } } }
相关文章推荐
- jQuery上传文件到服务器,实现量上传及压缩包导入,支持Office文档、PDF、图像、音视频和图纸等各类型文件。上传完成后系统自动为图片、音、视频类文件增加摘要及缩略图
- laravel实现上传文件类型判断
- 最近写的一个Php上传类,可以读取文件头部判断文件真实类型
- PhoneGAP实现带进度条的文件上传(支持任意类型文件)
- php 上传文件类型判断函数(避免上传漏洞 )
- ASP.NET上传文件对文件类型的高级判断
- jquery实现上传文件大小类型的验证例子(推荐)
- 如何实现将用户上传的文件生成缩略图
- ajax+h5实现文件上传,成功即显示缩略图。
- 通过jquery获取上传文件名称、类型和大小的实现代码
- 根据二进制流判断上传文件类型是否合法(非扩展名)
- 【php】挖掘php上传文件类型原理实现
- js判断上传文件类型判断FileUpload文件类型代码
- 上传文件类型判断
- ASP.NET在上传文件时对文件类型的高级判断的代码
- JavaScript判断上传文件类型
- 用ASP.net判断上传文件类型的三种方法
- php判断上传文件类型(防止篡改后缀)
- jQuery实现判断上传图片类型和大小的方法示例
- struts2的字段校验类型和struts2实现文件上传