问题描述
解决方案
http://www.cnblogs.com/xiaoyao2011/archive/2011/09/25/2189999.html
解决方案二:
http://www.jb51.net/article/24339.htm
解决方案三:
就是上传图片呀,把图片以十进制的格式存入数据库。可以参考部分代码
使用三层完成
1.从数据库读取图片,直接通过网格控件的DataSource绑定显示即可
DataTable dt = new DataTable();
DataHelp.OpenConn();
string sql = "select * from t_image";
SqlDataAdapter da = new SqlDataAdapter(sql, DataHelp.conn);
da.Fill(dt);
dataGridView1.DataSource = dt;
2.添加图片到数据库中
string sql = "insert into 表名 values(@id,@name,@image)";
//实例化Command对象
SqlCommand comm = new SqlCommand(sql,DataHelp.conn);
//实例化参数
SqlParameter pimage = new SqlParameter("@image", SqlDbType.VarBinary);
//将参数添加到命令对象
。。。。
//为图片参数赋值
//创建文件流,从本地读取图片
FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read);
//创建字节数组
Byte[] bs = new byte[fs.Length];
//将图片读到bs中
fs.Read(bs, 0, (int)fs.Length);
//给参数赋值
pimage.Value = bs;
3.点击控件显示对应的图片
第一种方式
//使用ImageConverter类实现图片转换
private ImageConverter convert = new ImageConverter();
Image img = (Image)convert.ConvertFrom(this.dataGridView1[e.ColumnIndex, e.RowIndex].Value);
dataGridView1.Rows[1].Cells[3].value
//将图片显示到控件
PictureBox1.Image=img;
第二种方式
//将图片读到字节数组
byte[] byteimg = (byte[])ds.Tables[0].Rows[dataGrid1.CurrentRowIndex][2];
//创建内存流,读取图片
MemoryStream stream = new MemoryStream(byteimg);
this.pictureBox1.Image = Image.FromStream(stream);
4.从本地磁盘显示图片到控件
openFileDialog1.ShowDialog();
string filename = openFileDialog1.FileName ;
pictureBox1.Image = Image.FromFile(filename);
解决方案四:
是二进制,上面失误了。
解决方案五:
将图片以二进制流的方式整体上传到数据库里,读取显示时,以二进制流的方式整体读出。这种方法虽然麻烦一点,但保存的图片整体到了数据库里。这样主机变更时不会导致图片丢失。
数据库:Wxqcs_User
字段:Photo Imgae null
上传页面源码:
答案就在这里:ASP.NET上传图片到数据库
----------------------
时间: 2024-10-27 07:24:23