C# ASP.NET 如何从数据库中读取出Image,加载html的image控件中。有源代码最好。
现在,我在数据库表中有一个Photo字段是Image类型的。我数据库是用Linq和其打交道的。而使用AJAX+JQuery在前台将数据库中的图片加到img控件中。不要说直...
现在,我在数据库表中有一个Photo字段是Image类型的。我数据库是用Linq和其打交道的。而使用AJAX+JQuery在前台将数据库中的图片加到img控件中。不要说直接保存图片地址。因为那样不安全。各位高手请指教。
展开
2个回答
展开全部
首先,创建一个数据库,用来保存图片,这只是个演示,所以一切从简。
create database MyDb
use MyDb
create table MyPhoto
(
id int primary key,
photo image //图片使用image 类型
)
然后,创建一个Windows应用程序,添加一个openFileDialog,一个 pictureBox,一个button(button 1的Text属性改为"上传")。
由于需要对文件操作,引入System.IO命名空间。对数据库操作当然要引入System.Data.SqlClient啦。基本思路就是将图片转化为字节数组保存起来,这时需要BinaryReader读取二进制字节。
代码部分:
——————————————————————————————————
using System.IO;
using System.Data.SqlClient;
namespace 如何将图片存入数据库
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "*jpg|*.jpg|*bmp|*.bmp|*gif|*.gif";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string fullpath = openFileDialog1.FileName;//获取文件对话框中选定的文件名的字符串,包括文件路径
FileStream fs = new FileStream(fullpath, FileMode.Open, FileAccess.Read);
byte[] imagebytes = new byte[fs.Length];//fs.Length文件流的长度,用字节表示
BinaryReader br = new BinaryReader(fs);//二进制文件读取器
imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));//从当前流中将count个字节读入字节数组中
SqlConnection conn = new SqlConnection("server=.\\sqlexpress;initial catalog=MyDb;integrated security=true");
conn.Open();
SqlCommand cmd = new SqlCommand("insert into MyPhoto values(@id,@Image)", conn);
cmd.Parameters.Add("@id", SqlDbType.Int, 4);
cmd.Parameters.Add("@Image", SqlDbType.Image);
cmd.Parameters["@id"].Value = 1;
cmd.Parameters["@Image"].Value = imagebytes;
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("图片上传成功");
}
}
}
create database MyDb
use MyDb
create table MyPhoto
(
id int primary key,
photo image //图片使用image 类型
)
然后,创建一个Windows应用程序,添加一个openFileDialog,一个 pictureBox,一个button(button 1的Text属性改为"上传")。
由于需要对文件操作,引入System.IO命名空间。对数据库操作当然要引入System.Data.SqlClient啦。基本思路就是将图片转化为字节数组保存起来,这时需要BinaryReader读取二进制字节。
代码部分:
——————————————————————————————————
using System.IO;
using System.Data.SqlClient;
namespace 如何将图片存入数据库
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "*jpg|*.jpg|*bmp|*.bmp|*gif|*.gif";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string fullpath = openFileDialog1.FileName;//获取文件对话框中选定的文件名的字符串,包括文件路径
FileStream fs = new FileStream(fullpath, FileMode.Open, FileAccess.Read);
byte[] imagebytes = new byte[fs.Length];//fs.Length文件流的长度,用字节表示
BinaryReader br = new BinaryReader(fs);//二进制文件读取器
imagebytes = br.ReadBytes(Convert.ToInt32(fs.Length));//从当前流中将count个字节读入字节数组中
SqlConnection conn = new SqlConnection("server=.\\sqlexpress;initial catalog=MyDb;integrated security=true");
conn.Open();
SqlCommand cmd = new SqlCommand("insert into MyPhoto values(@id,@Image)", conn);
cmd.Parameters.Add("@id", SqlDbType.Int, 4);
cmd.Parameters.Add("@Image", SqlDbType.Image);
cmd.Parameters["@id"].Value = 1;
cmd.Parameters["@Image"].Value = imagebytes;
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("图片上传成功");
}
}
}
参考资料: http://zhidao.baidu.com/question/98134223.html
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询