public partial class temp_addpic : System.Web.UI.Page...{ protected void Page_Load(object sender, EventArgs e) ...{ } public bool ThumbnailCallback() ...{ return false; } protected void Button1_Click(object sender, EventArgs e) ...{ Boolean fileOK = false; if (FileUpload1.HasFile) ...{ String fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower(); String[] allowedExtensions =...{ ".gif", ".png", ".jpeg", ".jpg" }; for (int i = 0; i < allowedExtensions.Length; i++) ...{ if (fileExtension == allowedExtensions[i]) ...{ fileOK = true; } else ...{ Response.Write("格式不对"); break; } } } if (fileOK) ...{//实现文件流和二进制数组的互相转换 Stream Stream1 = FileUpload1.PostedFile.InputStream; byte[] image = new byte[FileUpload1.PostedFile.ContentLength]; System.Drawing.Image.GetThumbnailImageAbort mycallback = new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback); Stream1.Read(image, 0, (int)Stream1.Length); MemoryStream m1 = new MemoryStream(image); System.Drawing.Image bit1 = System.Drawing.Image.FromStream(Stream1);//GetTumbnailImage的参数真是奇怪 System.Drawing.Image bit2 = bit1.GetThumbnailImage(50,50,mycallback,System.IntPtr.Zero); //新建个内存流 MemoryStream mem = new MemoryStream();//把bit2保存到mem中 还有,在生成bit的时候就已经有ImageFormat了 所以可以直接强制转换但是经过了GetThumb的bit2就不可以直接转了,不知道为什么 bit2.Save(mem,(System.Drawing.Imaging.ImageFormat)bit1.RawFormat); bit1.Dispose(); bit2.Dispose();//MemoryStream 可以转成数组 这样就可以把它写到数据库里了 image = mem.ToArray(); mem.Dispose(); Response.Write(image.LongLength+"===="+ FileUpload1.PostedFile.InputStream.Length); Response.Clear(); Response.BinaryWrite(image); } }} 第一个日志,记录下今天学习的点滴,呵呵