善良公社网站有一个上传图片的功能,我就做了一个小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