ASP.NET(与MySQL结合) .NETFramework4.0以下及webform 关于将图片以二进制方式上传到数据库 以fileupload控件为上传控件

2021/8/5 19:06:31

本文主要是介绍ASP.NET(与MySQL结合) .NETFramework4.0以下及webform 关于将图片以二进制方式上传到数据库 以fileupload控件为上传控件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

图片二进制上传需要用到一个命名空间,using System.IO,很多刚开始初学ASP.NET可能很少用这个。我这个比较适合ASP.NET .netframework4.0以下的初学者。
先上.aspx前端控件代码,设置两个简单控件(拖动就行)

  <asp:FileUpload ID="FileUpload1" runat="server" />
        <br />
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />

再来后端代码,我将进行分步写
首先要引进这些命名空间,包括MySQL库,系统数据操作库以及系统输入输出操作库

using System.IO;
using MySql.Data.MySqlClient;
using System.Data;

接着写上fileupload上传方式,这个是可以上传完后删除的。要图片数据数据写入数据库后才能删除。我这里卸载前面的Button控件创立的函数中
首先先进行的是上传工作。这个部分代码可以单独用,专门用来管理上传的。不过这里没用try来纠错,后面自己加就行了。

 string filename = FileUpload1.FileName;
        string nametession = filename.Substring(filename.LastIndexOf(".") + 1);
        string savemap = Server.MapPath("fileupload/") + filename;
        if (nametession.ToLower() == "jpg" || nametession.ToLower() == "bmp")//这个可以很多种上传格式,能改就行
        {
            FileUpload1.PostedFile.SaveAs(savemap); 
        }

上面的是上传方式,我将后面一部分给除去了,如果只是单纯的想用图片的路径保存在数据库,将路径存到数据库就行。为了方便,我还是将后面的代码写入上面那个判断中。完整的图片以二进制方式存入数据库代码方式。注意中间的MySqlParameter以及MySqlDbType,如果是不同数据库,就写相应的名称就行。大家注意看里面的注释进行理解

        string filename = FileUpload1.FileName;
        string nametession = filename.Substring(filename.LastIndexOf(".") + 1);
        string savemap = Server.MapPath("fileupload/") + filename;
        if (nametession.ToLower() == "jpg" || nametession.ToLower() == "bmp")
        {

            FileUpload1.PostedFile.SaveAs(savemap);
            /*接着上面的代码*/
            byte[] by = new byte[FileUpload1.PostedFile.ContentLength];//图片以二进制上传需要用到byte数组存储
            Stream st = FileUpload1.PostedFile.InputStream;//关键一步,读取上传的文件
            st.Read(by, 0, FileUpload1.PostedFile.ContentLength);//关键一步,将上传文件数组进行读取,注意三个参数,字符组,偏移数以及长度,缺一不可
            string mysqlcon = System.Configuration.ConfigurationManager.ConnectionStrings["ConnString"].ToString();//数据库连接字符串
            /*上面连接可以写成
           string mysqlcon =  Data Source=*测试一般用localhost*;User ID=root;Password=*自己写密码*;DataBase=*你的数据库* */
            MySqlConnection con = new MySqlConnection(mysqlcon);
            con.Open();    
            string strsql = "INSERT INTO b(pic)VALUES(@pic)";
            MySqlCommand com = new MySqlCommand(strsql,con);//这个要写在前面,否则无效
            com.Parameters.Add(new MySqlParameter("@pic",MySqlDbType.Blob));//添加参数
            /*一定要用为数据库变量赋值这种方式,要不然数组无法直接保存到mysql,输入到数据库的值永远为System.Byte[],转换为十六进制到数据库则数据库只能是文本十六进制*/
            com.Parameters["@pic"].Value = by;//给参数赋值
            com.ExecuteNonQuery();
            com.Dispose();
            con.Close();
            con.Dispose();

        }
        else
        {
            Response.Redirect("<script>alert('error!');</script>");
        }

大功告成,用Navicat自己看一下,选这里在在这里插入图片描述



这篇关于ASP.NET(与MySQL结合) .NETFramework4.0以下及webform 关于将图片以二进制方式上传到数据库 以fileupload控件为上传控件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程