上传和显示图片

上传和显示图片

今天,和大家讨论一下在ASP.NET中,如何上传图片至数据库,然后再将图片读取显示的问题。欢迎高手提出自己的方法!!!

目前,我主要用到以下两种方法:

1:上传图片的相对路径到数据库中相应字段里,读取显示时,将控件(假设用的是Image控件)的ImageUrl属性指向该相对路径即可。

2:将图片以二进制流的方式整体上传到数据库里,读取显示时,以二进制流的方式整体读出。这种方法稍微麻烦一点,但保存的是图片整体到数据库里。

第一种方法,实现起来比较简单,因为存入数据库里的只是图片相对路径,当然,同时也就有很大的局限性,由于是相对路径,所以当本地的图片变换了位置

或移除,或是在其他主机上浏览该图片时,就无法显示了。第二种方法,就比较灵活了,可以用在交互性的页面,比如校友录,因为上传的是整张图片,所

以只要读取正确,就能任何主机上显示出来。

下面,分别通过实际的代码,介绍这两种方法。

在这两个方法里,我将用到一个控件:FileUpload,该控件的具体用法参见百度谷歌。。。学习过程中,最好的老师就是他们俩。

1:上传图片相对路径,并读取显示。

数据库里的字段很简单,就两个
Image_ID    int    identity(1,1)     primarykey    not null
Image_Wpath    varchar(50)        null
Image_Wpath 用来保存图片的相对路径
这里注意,我需要上传的文件都放在文件夹“Image”,在后面的上传路径里就需要这个文件夹。
我在输入框里填入Image_ID的值,读取指定的图片,在图片的下面,显示出该图片的相对路径。
接下来,我们看一下具体代码实现上传和读取显示功能。
在项目里,有一个sqlHelper类,是一些常用的数据访问方法。这里就不详细讲了。
上传按钮里的事件:

 

 

protected void Button1_Click(object sender, EventArgs e)
{
       
string name = FileUpload1.FileName;       //获取文件名
       string type = name.Substring(name.LastIndexOf("."+ 1);    //获取文件类型
       string ipath = Server.MapPath("Image"+ "\" + name;    //获取文件路径
       string wpath = "Image\" + name;        //[color=red]设置文件保存相对路径(这里的路径起始就是我们存放图片的文件夹名)[/color]
       string query1 = "insert into Images values('" + wpath + "')";

       
if (type == "jpg" || type == "gif" || type == "bmp" || type == "png")
       {
         FileUpload1.SaveAs(ipath);        
//服务器保存路径
         sqlHelper.ExecterNonQuery(query1);
       }
}

显示按钮事件:

 

protected void Button2_Click(object sender, EventArgs e)
{
       
string query2 = "select * from Images where Image_ID=" + Convert.ToInt32(TextBox1.Text);
       SqlDataReader sdr 
= sqlHelper.GetReader(query2);
       
string wpath2 = "";

       
while (sdr.Read())
       {
         wpath2 
= sdr[1].ToString();    //获得相对路径
       }
       sdr.Close();
       Image1.ImageUrl 
= wpath2;    //图片显示路径就是相对路径
        Label1.Text = wpath2;    //显示相对路径
     string sBBsModuleImg = ConfigurationManager.AppSettings["BBsModuleImg"].ToString();
        UpLoader uploader = new UpLoader();
        //获取上传图片文件名
        string sImg = "";
     
        HttpPostedFile postedFileImg = this.FileUpload1.PostedFile;
        if (postedFileImg.ContentLength > 0 && !string.IsNullOrEmpty(postedFileImg.FileName))
        {
            sImg = uploader.UpLoaderPic(postedFileImg, sBBsModuleImg, 1);
            if (sImg == "")
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('图片文件上传不成功,数据无法保存!')", true);
                return;
            }
            else
                sImg = "/bbs/module/" + sImg;
        }
}

posted on 2013-02-19 15:29  闪电光芒  阅读(173)  评论(0编辑  收藏  举报

导航