c# mysql 二进制图片_ASP.NET(C#) 实现将图片以二进制保存到数据库中 转

注意:上传大文件时,会出现错误,原因我现在还不知道.

数据库名:mydata

表名:table_img

字段:id   自动编号

filename   文本

img     OLE 对象

default.aspx

无标题页

default.aspx.cs

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.OleDb;

using System.IO;

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void Button1_Click(object sender, EventArgs e)

{

try

{

if (FileUpload1.HasFile)

{

if (IsAllowedExtension(this.FileUpload1))

{

//取得上传文件的大小

int FileLen = FileUpload1.PostedFile.ContentLength;

Byte[] FileData = new Byte[FileLen];

//创建访问客户端上传文件的对象

HttpPostedFile hp = FileUpload1.PostedFile;

//创建数据流对象

Stream sr = hp.InputStream;

//将图片数据放到FileData数组对象实例中,0代表数组指针的起始位置,FileLen代表指针的结束位置

sr.Read(FileData, 0, FileLen);

string strdatapath = "Provider = Microsoft.JET.OleDB.4.0;Data Source = " + Server.MapPath("mydata.mdb");

OleDbConnection conn = new OleDbConnection(strdatapath);

conn.Open();

OleDbCommand cmd = new OleDbCommand("insert into table_img(filename,img) values(filename,img)", conn);

//存储过程插入到数据库中

OleDbParameter para1 = new OleDbParameter("filename", OleDbType.VarChar);

para1.Value = "FileData";

cmd.Parameters.Add(para1);

//存储过程插入到数据库中

OleDbParameter para = new OleDbParameter("img", OleDbType.Binary);

para.Value = FileData;

cmd.Parameters.Add(para);

cmd.ExecuteNonQuery();

//弹出上传成功的提示

Response.Write("");

//  Response.Write("");

//关闭数据库连接

conn.Close();

}

else

{

Response.Write("");

//  Response.Write("");

}

}

else

{

Response.Write("");

// Response.Write("");

}

}

catch (Exception ex)

{

Response.Write(ex.Message);

throw new Exception(ex.Message + "数据库连接失败");

}

}

#region 实现真正意义上的文件类型判断

public static bool IsAllowedExtension(FileUpload hifile)

{

System.IO.FileStream fs = new System.IO.FileStream(hifile.PostedFile.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);

System.IO.BinaryReader r = new System.IO.BinaryReader(fs);

string fileclass = "";

byte buffer;

try

{

buffer = r.ReadByte();

fileclass = buffer.ToString();

buffer = r.ReadByte();

fileclass += buffer.ToString();

}

catch

{

}

r.Close();

fs.Close();

if (fileclass == "255216" || fileclass == "7173")//说明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar

{

return true;

}

else

{

return false;

}

}

#endregion

}

显示图片

protected void Button2_Click(object sender, EventArgs e)

{

// 在此处放置用户代码以初始化页面

show();  //显示图片

}

public void show()

{

string strdatapath = "Provider = Microsoft.JET.OleDB.4.0;Data Source = " + Server.MapPath("mydata.mdb");

OleDbConnection conn = new OleDbConnection(strdatapath);

// conn.Open();

string ss = "1";// Request.QueryString["id"].ToString();

string s3 = "select * from table_img  where id=" + ss;

OleDbCommand comm = new OleDbCommand(s3, conn);

conn.Open();

OleDbDataReader dr = comm.ExecuteReader(CommandBehavior.CloseConnection);

while (dr.Read())

{

Response.Clear();

//  Response.C;

Response.BinaryWrite((byte[])dr["img"]);//读取

}

Response.End();

conn.Close();

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值