位置:海鸟网 > IT > ASP.NET >

图片上传的Codebehind(自动生成所略图)

using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Text;
using cj168.util;



namespace cj168.Web.Mag.Admins.FeData
{
    /// <summary>
    /// Summary description for fedata.
    /// </summary>
    public class feUploadPic : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.TextBox txtboxPicTitle;
        protected System.Web.UI.WebControls.Calendar calPicDate;
        protected System.Web.UI.WebControls.DropDownList ddlPicType;
        protected System.Web.UI.WebControls.TextBox txtboxPicIntro;
        protected System.Web.UI.HtmlControls.HtmlInputFile filePicName;
        protected System.Web.UI.WebControls.Button btnSubmit;
        protected System.Web.UI.WebControls.Label lblPicInfo;
        protected System.Web.UI.WebControls.TextBox txtboxPicDate;
        protected System.Web.UI.WebControls.RequiredFieldValidator Requiredfieldvalidator1;
        protected System.Web.UI.WebControls.RegularExpressionValidator vldCatName;
        protected System.Web.UI.WebControls.RequiredFieldValidator Requiredfieldvalidator2;
        protected System.Web.UI.WebControls.CustomValidator CustomValidator1;
        protected System.Web.UI.WebControls.RegularExpressionValidator RegularExpressionValidator1;
        protected System.Web.UI.WebControls.HyperLink hlkOriPic;
        protected System.Web.UI.WebControls.HyperLink hlkNewPic;
        protected System.Web.UI.WebControls.RegularExpressionValidator Regularexpressionvalidator2;
        protected System.Web.UI.WebControls.RegularExpressionValidator Regularexpressionvalidator3;
        protected System.Web.UI.WebControls.CheckBoxList checkboxlistRewrite;
        
        
    
        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
            //if(Page.IsPostBack)
            //txtboxPicDate.Text = calPicDate.SelectedDate.ToString();

            if(!Page.IsPostBack)
            {
                Bind2DropDownListPicType();

                //for(int i = 0;i < Request.Files.Count; i++)
                //{                
                //    checkboxlistRewrite.Items[i].Selected = false;
                //}
            }


            


        }

        public void Bind2DropDownListPicType()
        {
            cj168.DataAccess.Admins admins = new cj168.DataAccess.Admins();
            DataSet ds = admins.FePicTypeGet();
            //ddlPicType.DataSource = ;
            DataView dv = new DataView(ds.Tables["PicType"]);
            
            DataRowView drv = dv.AddNew();
            //DataColumnView dcv = dv.AddNew();
            drv["Title"] = "请选择";
            drv["fePicTypeID"] = "0";
            drv.EndEdit();            
            

            dv.Sort = "fePicTypeID";            

            ddlPicType.DataSource = dv;

            ddlPicType.DataBind();
        }

        public void UploadFile(object sender, System.EventArgs e)
        {
            
                string imgNameOnly, imgNameNoExt, imgExt;
                string imgThumbnail;
                int erroNumber = 0;
                System.Drawing.Image oriImg, newImg;
                string strFePicSavePath = ConfigurationSettings.AppSettings["FePicSavePath"].ToString();
                string strFePicThumbFormat = ConfigurationSettings.AppSettings["FePicThumbFormat"].ToString().ToLower();
                int intFeThumbWidth = Int32.Parse(ConfigurationSettings.AppSettings["FePicThumbWidth"]);
                string fileExt;
                string strPicTitle = txtboxPicTitle.Text;
                string strPicIntro = txtboxPicIntro.Text;
                string strPicDate = txtboxPicDate.Text;

                int intPicType = Int32.Parse(ddlPicType.SelectedItem.Value);
                string strPicType = intPicType.ToString() + "_" + DateTime.Now.Date.ToShortDateString() + "_";
                string strFePicWebPath = ConfigurationSettings.AppSettings["FePicWebPath"];

                cj168.DataAccess.Admins admins = new cj168.DataAccess.Admins();
                
                //if(admins.FePicTypeSet(textboxTitle.Text,0) < 0)
                //    lblAddPicInfo.Text = "操作失败:已经存在相同名称类型,请修改";
                //else
                //    lblAddPicInfo.Text = "操作成功";


                StringBuilder picInfo = new StringBuilder();

            
            
            if(Page.IsValid)
            {
            

                for(int i = 0;i < Request.Files.Count; i++)
                {
                    HttpPostedFile PostedFile = Request.Files[i];
                    fileExt = (System.IO.Path.GetExtension(PostedFile.FileName)).ToString().ToLower();
                    //5-test.jpg
                    imgNameOnly = strPicType + System.IO.Path.GetFileName(PostedFile.FileName);
                    if(fileExt == ".jpg" || fileExt == ".gif" || fileExt == ".png")
                    {

                        if(System.IO.File.Exists(strFePicSavePath + imgNameOnly) && (checkboxlistRewrite.Items[i].Selected == false))
                        {
                            erroNumber = erroNumber + 1;
                            picInfo.Append("<b>错误:</b>文件("+ (i+1) +") " + imgNameOnly + " 已经存在,请修改文件名<br>" );
                        }
                    }
                    else
                    {
                        erroNumber = erroNumber + 1;
                        if(fileExt == "")
                            picInfo.Append("<b>错误:</b>请选择文件<br>" );
                        else
                        picInfo.Append("<b>错误:</b>文件("+ (i+1) +") " + imgNameOnly + " 扩展名 " + fileExt + " 不被许可<br>" );
                    }                

                }

                if(erroNumber > 0)
                {
                    picInfo.Append("<font color=red>全部操作均未完成,请修改错误,再进行操作</font><br>");

                    hlkOriPic.ImageUrl = "";
                    hlkOriPic.ToolTip = "";
                    hlkNewPic.ImageUrl = "";
                    hlkNewPic.ToolTip = "";
                }
                else            
                {
                    for(int i = 0;i < Request.Files.Count; i++)
                    {
                
                        HttpPostedFile PostedFile = Request.Files[i];
                        imgNameOnly = strPicType + System.IO.Path.GetFileName(PostedFile.FileName);
                        imgNameNoExt = System.IO.Path.GetFileNameWithoutExtension(PostedFile.FileName);
                        imgExt = System.IO.Path.GetExtension(PostedFile.FileName).ToString().ToLower();
                    
                    
                        oriImg = System.Drawing.Image.FromStream(PostedFile.InputStream);
                        newImg = oriImg.GetThumbnailImage(intFeThumbWidth, intFeThumbWidth * oriImg.Height/oriImg.Width,null,new System.IntPtr(0));
                        switch(imgExt)
                        {
                            //case ".jpeg":
                            case ".jpg":
                                oriImg.Save(strFePicSavePath + imgNameOnly , System.Drawing.Imaging.ImageFormat.Jpeg);
                                break;
                            case ".gif":
                                oriImg.Save(strFePicSavePath + imgNameOnly , System.Drawing.Imaging.ImageFormat.Gif);
                                break;
                            case ".png":
                                oriImg.Save(strFePicSavePath + imgNameOnly , System.Drawing.Imaging.ImageFormat.Png);
                                break;
                        }
                        
                        //oriImg.Save(ConfigurationSettings.AppSettings["FePicSavePath"] + imgNameNoExt + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
                        
                                        
                        switch(strFePicThumbFormat)
                        {
                                //jpeg format can get the smallest file size, and the png is the largest size
                            //case "jpeg":
                            case "jpg":
                                newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
                                imgThumbnail = imgNameOnly + "_thumb.jpg";
                                break;
                            case "gif":
                                newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.gif",System.Drawing.Imaging.ImageFormat.Gif);
                                imgThumbnail = imgNameOnly + "_thumb.gif";
                                break;
                            case "png":
                                newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.png",System.Drawing.Imaging.ImageFormat.Png);
                                imgThumbnail = imgNameOnly + "_thumb.png";
                                break;
                            default:
                                newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
                                imgThumbnail = imgNameOnly + "_thumb.jpg";                        
                                break;
                    
                        }//switch
                        
                        picInfo.Append("<b>文件 名:</b>" + imgNameOnly + " ( " + oriImg.Width + " x " + oriImg.Height + " ) " + PostedFile.ContentLength/1024 + "KB<br>");
                        picInfo.Append("<b>缩略图名:</b>" + imgThumbnail + " ( " + newImg.Width + " x " + newImg.Height + " )<br><br>");

                        hlkOriPic.ImageUrl = strFePicWebPath + imgNameOnly;
                        hlkOriPic.ToolTip = "◆原图◆\n文件名:" + imgNameOnly + "\n尺寸:" + oriImg.Width + " x " + oriImg.Height + "\n字节:" + PostedFile.ContentLength/1024 + "KB";
                        hlkNewPic.ImageUrl = strFePicWebPath + imgThumbnail;
                        hlkNewPic.ToolTip = "◆缩略图◆\n文件名:" + imgThumbnail + "\n尺寸:" + newImg.Width + " x " + newImg.Height;
                        

                        oriImg.Dispose();
                        newImg.Dispose();
                        picInfo.Append("<font color=red>图片上传成功</font><br>");
                        if(admins.FePicDataSet(strPicTitle, strPicDate, imgNameOnly, intPicType, strPicIntro, imgThumbnail,0) < 0)
                            picInfo.Append("<font color=red>保存信息到数据库失败</font><br>");
                        else
                            picInfo.Append("<font color=red>保存信息到数据库成功</font><br>");
                    
                    }//for
                    picInfo.Append("<font color=red>所有操作成功</font><br>");

                }// if erronumber = 0

            
                
            }
            else
            {
                picInfo.Append("<font color=red>有错误,请检查。操作未成功</font><br>");

                hlkOriPic.ImageUrl = "";
                hlkOriPic.ToolTip = "";
                hlkNewPic.ImageUrl = "";
                hlkNewPic.ToolTip = "";

            }

            for(int i = 0;i < Request.Files.Count; i++)
            {                
                checkboxlistRewrite.Items[i].Selected = false;
            }

            lblPicInfo.Text = picInfo.ToString();

        }

        public void CalDateSelected(object sender,System.EventArgs e)
        {
            txtboxPicDate.Text = calPicDate.SelectedDate.ToShortDateString();

        }

        public void ServerValidateCheckDate(object sender, System.Web.UI.WebControls.ServerValidateEventArgs value)
        {
            cj168.util.iUtil iUtils = new cj168.util.iUtil();
            if(!iUtils.IsDate(value.Value))
                value.IsValid = false;
            else
                value.IsValid = true;

        }

        


        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
        
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
                                                                    {    
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion
    }
}