.NET Framework4.0 关于将图片以二进制方式上传到MySQL数据库 以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自己看一下,选这里在在这里插入图片描述
特别提示,MySQL中blob比较小,和oracle不太一样,但是MySQL里面有longblob,这个就可以选很大的图了,默认最大是4G,不过好像可以进入配置无限改。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值