asp.net按路径把图片上传到sql数据库

时间:2022-11-28 19:05:32
我用的fileupload只能把图片上传到指定的文件夹。我想把路径上传到数据库。要怎么做。
        protected void Button3_Click1(object sender, EventArgs e)
        {
            if (!String.IsNullOrEmpty(this.FileUpload1.PostedFile.FileName.ToString()))
            { 
             string  filename = this.FileUpload1.PostedFile.FileName.Substring
             (this.FileUpload1.PostedFile.FileName.LastIndexOf("\\") + 1);
             filename = System.IO.Path.GetFileName(filename);

             int index = filename.LastIndexOf(".");
             string lastname = filename.Substring(index, filename.Length - index);
             string newfile = DateTime.Now.ToString("yyyyMMddhhmmss") + lastname;  //按时间改名
             string filepath = "image/" + newfile;
             FileUpload1.PostedFile.SaveAs(Server.MapPath(filepath)); //这个就是存到数据库的路径
            }
            String sql= "server=172.16.101.62;database=Flower;uid=SY;pwd=123";
            SqlConnection sqlc = new SqlConnection(sql);
            sqlc.Open();
            SqlCommand Cmd = new SqlCommand();//写到这里就不会了。求教了。

        }

13 个解决方案

#1


客户端的路径对于服务器毫无意义。

上传文件后记录下文件在服务器上的路径,比如你的filepath。

然后就是把这个变量写入数据库即可。

#2


客户端路径?不好意思我还是新手。能说一下具体我要怎么做么?

#3


SqlCommand Cmd = new SqlCommand();//写到这里就不会了。求教了。
 Cmd.Connection=sqlc;
Cmd.CommandType = CommandType.Text;
Cmd.CommandText = "insert into tb(filepath) values('"+filepath +"')";
Cmd.ExecuteNonQuery();

#4


如果不会向SQL Server写入数据,就以这个为题目去学习,不要纠结在“路径”这种概念上。

#5


服务器无法引用本地物理地址 一般都是用那个swf组件上传的吧

#6


猜测一下,你是想把图片存到数据库里,然后从数据库调用图片吧?因为不会把图片直接往数据库里存,所以想在数据库存个路径,然后在读取时设置image的url为服务器的存储路径,从而显示指定图片.那么首先你要确定数据表里有专门存储图片路径的字段,设为nvarchar类型.然后把你的filepath变量的值写入这个字段就行了.不知道你的数据库表结构,所以没法给你具体的sql语句.你可以参考下ado.net方面的资料.很简单的.

#7


引用 3 楼 yezhenhua101 的回复:
SqlCommand Cmd = new SqlCommand();//写到这里就不会了。求教了。
 Cmd.Connection=sqlc;
Cmd.CommandType = CommandType.Text;
Cmd.CommandText = "insert into tb(filepath) values('"+filepath +"')";
Cmd.ExecuteNonQuer……


这这样就保存了图片的路径了,读时直接读取路径就行了。

#8



<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:FileUpload ID="fulUploadImage" runat="server" Width="205px" />
          <asp:Button ID="btnUpload" runat="server" Text="上传" onclick="btnUpload_Click"></asp:Button>
    </div>
    </form>
</body>
</html>



      protected void btnUpload_Click(object sender, EventArgs e)
        {
            string strLoadFileName = "";

            if (LoadPicture(fulUploadImage, "upload/", this, 200,  ref strLoadFileName))
            {
                //上传成功,可以将strLoadFileName取得文件名存入数据库
            }
        }

    private bool LoadPicture(FileUpload fileUpload, string Url, Page page, int size, ref string newname)
        {
            if (fulUploadImage.HasFile)
            {
                if (fulUploadImage.PostedFile != null)
                {
                    //以下判断图片的
                    try
                    {
                        System.Drawing.Image upImage = System.Drawing.Image.FromStream(fileUpload.PostedFile.InputStream);
                        Bitmap bm = new Bitmap(upImage);
                    }
                    catch
                    {
                        MessageBox.Show(page, "图片有问题!");
                        return false;
                    }
                    //以上判断图片的,和下面的有点重复
                    //下为判断是㫘是真图片
                    if (fileUpload.PostedFile.ContentType.ToString().IndexOf("image") < 0)
                    {
                        MessageBox.Show(page, "不要上传非法图片gif|jpg|jpeg|bmp!");
                        return false;

                    }
                    else
                    {
                        //上为判断是㫘是真图片
                        string filename;//文件名字
                        string hz;
                        filename = fileUpload.FileName;
                        //取后最
                        int pos = filename.IndexOf(".");
                        hz = filename.Substring((pos + 1)).ToLower();

                        if (hz != "gif" && hz != "jpg" && hz != "jpeg" && hz != "png" && hz != "bmp" || fileUpload.PostedFile.ContentLength > size * 1024)
                        {
                            MessageBox.Show(page, string.Format("图片格式不对或大小超过{0}K,请检查!", size));
                            return false;
                        }
                        else
                        {
                            newname = GetImageName() + "." + hz;
                            //保存图片
                            string pathurl;
                            pathurl = page.Server.MapPath("~") + "\\" + Url + "/\\" + newname;
                            string kb = fileUpload.FileContent.Length.ToString();
                            fileUpload.PostedFile.SaveAs(pathurl);
                            return true;
                        }
                    }

                }
                return true;
            }
            return true;

        }

        //产生图片随机名字
        private string GetImageName()
        {
            string strname = null;
            strname = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() +   DateTime.Now.Day.ToString() + DateTime.Now.TimeOfDay.Hours.ToString() + DateTime.Now.TimeOfDay.Minutes.ToString() + DateTime.Now.TimeOfDay.Milliseconds.ToString();
            return strname;
        }

#9



        /// <summary>
        /// 
        /// </summary>
        /// <param name="fileUpload">FileUpload上传控件</param>
        /// <param name="Url">上传路径</param>
        /// <param name="page">Page</param>
        /// <param name="size">上传文件大小</param>
        /// <param name="newname">ref 文件名</param>
        /// <returns>bool</returns>
        private bool LoadPicture(FileUpload fileUpload, string Url, Page page, int size, ref string newname)

#10


你把filepath 保存到数据库中不就行了~!

#12


分两步:
一。把图片上传到网站的一个文件夹里

二。同时吧路径上传到数据库里(相对路径)路径做一下截取

#13


引用 1 楼 caozhy 的回复:
客户端的路径对于服务器毫无意义。

上传文件后记录下文件在服务器上的路径,比如你的filepath。

然后就是把这个变量写入数据库即可。
+1就是这么个思路

#1


客户端的路径对于服务器毫无意义。

上传文件后记录下文件在服务器上的路径,比如你的filepath。

然后就是把这个变量写入数据库即可。

#2


客户端路径?不好意思我还是新手。能说一下具体我要怎么做么?

#3


SqlCommand Cmd = new SqlCommand();//写到这里就不会了。求教了。
 Cmd.Connection=sqlc;
Cmd.CommandType = CommandType.Text;
Cmd.CommandText = "insert into tb(filepath) values('"+filepath +"')";
Cmd.ExecuteNonQuery();

#4


如果不会向SQL Server写入数据,就以这个为题目去学习,不要纠结在“路径”这种概念上。

#5


服务器无法引用本地物理地址 一般都是用那个swf组件上传的吧

#6


猜测一下,你是想把图片存到数据库里,然后从数据库调用图片吧?因为不会把图片直接往数据库里存,所以想在数据库存个路径,然后在读取时设置image的url为服务器的存储路径,从而显示指定图片.那么首先你要确定数据表里有专门存储图片路径的字段,设为nvarchar类型.然后把你的filepath变量的值写入这个字段就行了.不知道你的数据库表结构,所以没法给你具体的sql语句.你可以参考下ado.net方面的资料.很简单的.

#7


引用 3 楼 yezhenhua101 的回复:
SqlCommand Cmd = new SqlCommand();//写到这里就不会了。求教了。
 Cmd.Connection=sqlc;
Cmd.CommandType = CommandType.Text;
Cmd.CommandText = "insert into tb(filepath) values('"+filepath +"')";
Cmd.ExecuteNonQuer……


这这样就保存了图片的路径了,读时直接读取路径就行了。

#8



<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:FileUpload ID="fulUploadImage" runat="server" Width="205px" />
          <asp:Button ID="btnUpload" runat="server" Text="上传" onclick="btnUpload_Click"></asp:Button>
    </div>
    </form>
</body>
</html>



      protected void btnUpload_Click(object sender, EventArgs e)
        {
            string strLoadFileName = "";

            if (LoadPicture(fulUploadImage, "upload/", this, 200,  ref strLoadFileName))
            {
                //上传成功,可以将strLoadFileName取得文件名存入数据库
            }
        }

    private bool LoadPicture(FileUpload fileUpload, string Url, Page page, int size, ref string newname)
        {
            if (fulUploadImage.HasFile)
            {
                if (fulUploadImage.PostedFile != null)
                {
                    //以下判断图片的
                    try
                    {
                        System.Drawing.Image upImage = System.Drawing.Image.FromStream(fileUpload.PostedFile.InputStream);
                        Bitmap bm = new Bitmap(upImage);
                    }
                    catch
                    {
                        MessageBox.Show(page, "图片有问题!");
                        return false;
                    }
                    //以上判断图片的,和下面的有点重复
                    //下为判断是㫘是真图片
                    if (fileUpload.PostedFile.ContentType.ToString().IndexOf("image") < 0)
                    {
                        MessageBox.Show(page, "不要上传非法图片gif|jpg|jpeg|bmp!");
                        return false;

                    }
                    else
                    {
                        //上为判断是㫘是真图片
                        string filename;//文件名字
                        string hz;
                        filename = fileUpload.FileName;
                        //取后最
                        int pos = filename.IndexOf(".");
                        hz = filename.Substring((pos + 1)).ToLower();

                        if (hz != "gif" && hz != "jpg" && hz != "jpeg" && hz != "png" && hz != "bmp" || fileUpload.PostedFile.ContentLength > size * 1024)
                        {
                            MessageBox.Show(page, string.Format("图片格式不对或大小超过{0}K,请检查!", size));
                            return false;
                        }
                        else
                        {
                            newname = GetImageName() + "." + hz;
                            //保存图片
                            string pathurl;
                            pathurl = page.Server.MapPath("~") + "\\" + Url + "/\\" + newname;
                            string kb = fileUpload.FileContent.Length.ToString();
                            fileUpload.PostedFile.SaveAs(pathurl);
                            return true;
                        }
                    }

                }
                return true;
            }
            return true;

        }

        //产生图片随机名字
        private string GetImageName()
        {
            string strname = null;
            strname = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() +   DateTime.Now.Day.ToString() + DateTime.Now.TimeOfDay.Hours.ToString() + DateTime.Now.TimeOfDay.Minutes.ToString() + DateTime.Now.TimeOfDay.Milliseconds.ToString();
            return strname;
        }

#9



        /// <summary>
        /// 
        /// </summary>
        /// <param name="fileUpload">FileUpload上传控件</param>
        /// <param name="Url">上传路径</param>
        /// <param name="page">Page</param>
        /// <param name="size">上传文件大小</param>
        /// <param name="newname">ref 文件名</param>
        /// <returns>bool</returns>
        private bool LoadPicture(FileUpload fileUpload, string Url, Page page, int size, ref string newname)

#10


你把filepath 保存到数据库中不就行了~!

#11


#12


分两步:
一。把图片上传到网站的一个文件夹里

二。同时吧路径上传到数据库里(相对路径)路径做一下截取

#13


引用 1 楼 caozhy 的回复:
客户端的路径对于服务器毫无意义。

上传文件后记录下文件在服务器上的路径,比如你的filepath。

然后就是把这个变量写入数据库即可。
+1就是这么个思路