asp.net上传图片并显示相册

   善良公社网站有一个上传图片的功能,我就做了一个小Demo,是用asp.net写的,主要的功能是:上传图片后,在相册中显示出来。

  1.自定义一个控件Image.ascx

     这个控件主要是为了动态绑定到table中显示出来。

      

     

    public partial class Image : System.Web.UI.UserControl
    {
        //图片ID
        string _imageID;
        public string ImageID
        {
            set
            {
                this._imageID =value .ToString ();
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack )
            {  
                //创建数据库连接
                SqlConnection con = DB.createConnection();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = con;
                con.Open();
                //根据传递进来的图片ID查询图片
                cmd.CommandText = "select * from Image where ImageID='"+this._imageID +"'";
                SqlDataReader sdr = cmd.ExecuteReader();
                sdr.Read();
                if (sdr.GetString(4) == null)
                {
                    lblShowName.Text = "";
                }
                else
                { 
                    this.lblShowName.Text = sdr.GetString(4);
                }
                //图片绑定到Image控件中
                this.imgPC.ImageUrl = "/Photo/" + sdr.GetString(2);
                //sdr.Close();
                //con.Close();
            }
        }


        protected void lBtnDel_Click(object sender, EventArgs e)
        {
            //获取图片的名字
            String filename = lblShowName.Text;
            SqlConnection con = DB.createConnection();
            SqlCommand cmd = con.CreateCommand();
            con.Open();
            cmd.CommandText = "delete from Image where ImageName='"+filename+"'";
           
            try
            {
                int count = cmd.ExecuteNonQuery();
                if (count > 0)
                {
                    //string ImageUrl = Server.MapPath("~/Photo" + "\\" + filename);
                    //文件的物理路径
                    FileInfo fi = new FileInfo(Server.MapPath("~/Photo" + "\\" + filename));
                    //文件存在则删除
                    if (fi.Exists)
                    {
                        fi.Delete();
                    }
                    //File.Delete(ImageUrl);
                    Response.Write("<script>alert('删除成功')</script>");
                    Response.Write("<script language=javascript>window.location.href='showImage.aspx'</script>");
                }
            }
            catch(Exception ex)
            {
                throw ex;
            }
        }


    }
  2.上传图片

      

        /// <summary>
        /// 上传图片
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnUpImage_Click(object sender, EventArgs e)
        {
            String fullfilename = this.FileUpload1.PostedFile.FileName;                   //获取图片的绝对路径
            String filename = fullfilename.Substring(fullfilename.LastIndexOf("\\") + 1);//获取图片的名称
            String type = filename.Substring(filename.LastIndexOf(".") + 1);            //获取图片的格式(类型)
            String Rename = DateTime.Now.ToString("yyyyMMddHHmmss");     //利用当前时间命名图片,避免上传图片命名重复
            Session["photo"] = Rename + "." + type;
            string varToDirectory = Request.PhysicalApplicationPath + "Photo";
            //判断文件是否存在,不存在则创建该文件
            if (!Directory.Exists(varToDirectory))
            {
                Directory.CreateDirectory(varToDirectory);
            }

            if (type == "jpg" || type == "png" || type == "PNG" || type == "JPG" || type == "JPEG" || type == "jpeg" || type == "gif" || type == "GIF")
            {
                SqlConnection con = DB.createConnection();
                con.Open();
                SqlCommand cmd = con.CreateCommand();
                string urlWay = "../Photo/" + Rename + "." + type;
                cmd.CommandText = "insert into Image(ImageDescript,ImageWay,ImageOwer,ImageName) values('美图秀秀',@urlWay,'lhg',@ImageName)";
                SqlParameter[] para = new SqlParameter[]{new SqlParameter("@urlWay", urlWay),
                                                         new SqlParameter ("@ImageName",Rename + "." + type )};
                cmd.Parameters.AddRange(para);
                if (cmd.ExecuteNonQuery() > 0)
                {
                    this.FileUpload1.SaveAs(Server.MapPath("~/Photo") + "\\" + Rename + "." + type);//将图片以相对路径保存,并以当前时间命名
                    this.photo.ImageUrl = "../Photo/" + Rename + "." + type;//预览当前图片
                }
                else
                {
                    return;
                }
            }
            else
            {
                Response.Write("<script language='javascript'>alert('您选择的图片有误!');</script>");
            }
        }
 3.显示相册

  

    public partial class showImage : System.Web.UI.Page
    {
        
        protected System.Web.UI.WebControls.Table table1;
        //每行显示3张图片
        private int rowNum = 3;                                                                                            ///窗体加载
        protected void Page_Load(object sender, EventArgs e)
        {
            //创建数据连接
            SqlConnection con = DB.createConnection();
            //选择当前用户上传图片的ImageID
            SqlCommand cmd = new SqlCommand("select ImageID from Image where ImageOwer='lhg'",con);
            con.Open();
            //初始化图片个数为0 
            int i = 0;
            SqlDataReader sdr = cmd.ExecuteReader();
            //实例化一个TableRow
            System.Web.UI.WebControls.TableRow tr = new TableRow();
            //循环显示该用户的图片
            while (sdr.Read())
            {
                i = i + 1;
                System.Web.UI.WebControls.TableCell tc = new TableCell();
                Image ima = (Image)this.LoadControl("Image.ascx"); //加载自定义控件
                ima.ImageID =sdr.GetInt32 (0).ToString ();//给控件传入ImageID
                tc.Controls.Add(ima);
                tr.Controls.Add(tc);
                //判断当然是否已经满足3张图片
                if (i%this.rowNum ==0)
                {
                    this.table1.Rows.Add(tr);
                    tr = new TableRow();
                }
                if (i%this.rowNum !=0)
                {
                    this.table1.Rows.Add(tr);
                }
            }
            sdr.Close();
            con.Close();
        }
    }
   具体的Demo可以在这里下载: http://download.csdn.net/detail/a137151062/6547683

     

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 29
    评论
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值