.net里用mysql存储和输出图片

.net里用mysql存储和输出图片

1.存储:
将图片存储为byte流的形式存入mysql里

 public Byte[] image() {
            string uppath = "";
            string fileFullname = this.FileUpload.FileName;
            string dataName = DateTime.Now.ToString("yyyyMMddhhmmss");
            string fileName = fileFullname.Substring(fileFullname.LastIndexOf("\\") + 1);
            string type = fileFullname.Substring(fileFullname.LastIndexOf(".") + 1);
            string image_lu = "C:\\Users\\dahuzi\\Desktop\\厂库\\home\\warehouse\\image_Customer\\";
            if (type == "bmp" || type == "jpg" || type == "jpeg" || type == "gif" || type == "JPG" || type == "JPEG" || type == "BMP" || type == "GIF" || type == "png" || type == "PNG")
            {
                if(!Directory.Exists(image_lu))
                    {
                Directory.CreateDirectory(image_lu);//目录不存在则创建相应的目录
            }

                this.FileUpload.SaveAs(Server.MapPath("~/image_Customer") + "\\" + dataName + "." + type);
                uppath = image_lu + dataName +  "."  + type;
            }
            FileStream fs = new FileStream(uppath, FileMode.Open);
            BinaryReader br = new BinaryReader(fs);
            Byte[] byData = br.ReadBytes((int)fs.Length);
            fs.Close();
            return byData;
        } 
        protected void Customer_insert(object sender, EventArgs e)
        {
            //图片处理
            Models.Customer customer = new Models.Customer();
            customer._byData = image();

            customer.Name=name.Text;
            customer.Phone = Int64.Parse(phone.Text);
            customer.Mailbox = Mailbox.Text;
            customer.Password = password.Text;
            customer.insert();
        }

连接数据库的代码

public void insert() {
            MySqlConnection mySql = listen();
            mySql.Open();           

                string str = "INSERT INTO Customers(Customer_Name, Customer_Password, Customer_Mailbox, Customer_Phone, Customer_Photo) " +
                       string.Format("VALUES ( '{0}','{1}','{2}' , '{3}',@file)", _Name,_password,_Mailbox,_Phone);
                MySqlCommand mycomm = new MySqlCommand(str, mySql);
                mycomm.Parameters.Add("@file", MySqlDbType.Binary, _byData.Length);
                mycomm.Parameters["@file"].Value = _byData;
                mycomm.ExecuteNonQuery();
                mySql.Close();
                /*
                MySqlDataAdapter mda = new MySqlDataAdapter(str, mySql);
                DataSet ds = new DataSet();
                mda.Fill(ds, "Employees");
                mySql.Close();*/
            }

2.输出图片
这里因为web里没有pictureBox控件,所以我们需要单独创建一个界面去输出数据流
这个是我的文件结构,其中image.aspx是输出图片的数据流,personal.aspx是使用图片
在这里插入图片描述
这是连接数据库代码

 public Customer Details() {
            MySqlConnection mySql = listen();
            mySql.Open();
            string str = "SELECT Customer_Name,Customer_Mailbox,Customer_Phone ,Customer_Photo FROM Customers WHERE id=1; ";
            MySqlCommand mycomm = new MySqlCommand(str, mySql);
            MySqlDataReader reader = mycomm.ExecuteReader();
            while (reader.Read()) {
                this._Name = reader.GetString(0);
                this._Mailbox = reader.GetString(1);
                this._Phone = reader.GetInt64(2);
                this._byData = (byte[])reader["Customer_Photo"];
                MemoryStream ms = new MemoryStream(_byData);
                this._Photo = new Bitmap(ms);
            }
            mySql.Close();
            return this;
        }
namespace warehouse.show
{
    public partial class Personal : System.Web.UI.Page
    {
        public Models.Customer customer;
        protected void Page_Load(object sender, EventArgs e)
        {
            Models.Customer Customer = new Models.Customer();
            customer = Customer.Details();
            Image1.ImageUrl = "~/show/asset/image.aspx";
        }
    }
}
namespace warehouse.show.asset
{
    public partial class image : System.Web.UI.Page
    {
        public Models.Customer customer;
        protected void Page_Load(object sender, EventArgs e)
        {
            Models.Customer Customer = new Models.Customer();
            customer = Customer.Details();
            Response.ContentType = "application/octet-stream";
            Response.BinaryWrite(customer._byData);
            Response.End();

        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值