ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2021-08-05 15:04:54  阅读:272  来源: 互联网

标签:控件 ASP string FileUpload1 数据库 filename webform nametession 上传 netframework3.5


图片二进制上传需要用到一个命名空间,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,string,FileUpload1,数据库,filename,webform,nametession,上传,netframework3.5
来源: https://blog.csdn.net/xxxxzms/article/details/119417261

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有