如何把图片存进数据库?用二进制 怎么对图片进行存储跟取出??例如做博客的上传相片和读取相片,哪位高手帮帮我?那图片是要实际保存在项目的根目录下吗?还有博客的排版是不是跟在dreamweaver里面做网站类似? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你看看小虎弟妹的博客http://www.cnblogs.com/jxyxhz/archive/2009/03/02/1401538.html 是用C#+ASP.NET+SQL Server 2005来做的,谢谢! // 存图片到数据库 protected void btnOK_Click(object sender, EventArgs e) { if (!file1.HasFile) { Response.Write("<script>alert('请选择图片文件');</script>"); return; } String filter1 = ".jpg,.jpeg,.gif"; String ss = System.IO.Path.GetExtension(file1.PostedFile.FileName).ToLower(); if (filter1.IndexOf(ss) == -1) { Response.Write("<script>alert('您选择的不是图片文件');</script>"); return; } Int32 iSize = file1.PostedFile.ContentLength; String iType = file1.PostedFile.ContentType; System.IO.Stream iStream = file1.PostedFile.InputStream; Byte[] iByte = new byte[iSize]; iStream.Read(iByte, 0, iSize); iStream.Close(); String str = m1.picin(iType, iSize.ToString(), iByte); if (str != "OK") Response.Redirect("err.aspx?msg=" + HttpUtility.UrlEncode(str)); } } //存储过程 picin 添加新闻图片 public String picin(String pType, String pSize, Byte[] pImg) { SqlCommand cmd = new SqlCommand("picin", conn); cmd.CommandType = CommandType.StoredProcedure; //输入参数: SqlParameter pa2 = new SqlParameter("@pType", SqlDbType.VarChar); pa2.Value = pType; cmd.Parameters.Add(pa2); SqlParameter pa3 = new SqlParameter("@pSize", SqlDbType.VarChar); pa3.Value = pSize; cmd.Parameters.Add(pa3); SqlParameter pa5 = new SqlParameter("@pImg", SqlDbType.Image); pa5.Value = pImg; cmd.Parameters.Add(pa5); try { this.sqlOpen(); cmd.ExecuteNonQuery(); return "OK"; } catch (SqlException err) { return err.ToString(); } finally { this.sqlClose(); } }-- 存储过程CREATE Proc picin( @pType varchar(50), @pSize varchar(50), @pImg image)ASINSERT INTO pic (pType, pSize, pImg) VALUES (@pType, @pSize, @pImg)GO读取图片:<img src='img.aspx?pID=2' />img.aspx代码新建一个aspx,在load事件里: protected void Page_Load(object sender, EventArgs e) { int pID = Convert.ToInt32(Request.QueryString["pID"]); if (pID != 0) { cmd = " SELECT pID, pType, pImg FROM pic WHERE pID = " + pID; try { m2.sqlOpen(); m2.read1(cmd); if (m2.r1.Read()) { Response.Clear(); Response.BinaryWrite((byte[])m2.r1["pImg"]); Response.End(); } } finally { m2.sqlClose(); } } } 正解,显示图片的时候是读取图片的存储路径(一般存相对路劲)给IMG控件。 一般是把图片存在硬盘上的,db上保存路径如果项目需要可以直接以二进制流的形式保存到db中 存:FileStream fs = new FileStream(MusicClass.Picpath, FileMode.Open, FileAccess.Read); int imgLen = (int)fs.Length; Byte[] ImgBinaryData = new Byte[imgLen]; fs.Read(ImgBinaryData, 0, imgLen); Com.Parameters.Add("@专辑图片", SqlDbType.Image); Com.Parameters["@专辑图片"].Value = ImgBinaryData;读: Byte[] byteDB = new Byte[0]; byteDB = (Byte[])(dgvMusic["专辑图片", dgvMusic.CurrentCell.RowIndex].Value); MemoryStream stmImage = new System.IO.MemoryStream(byteDB); this.pbImage.Image = Image.FromStream(stmImage); 在asp.net中使用水晶报告的问题 求助:单击按钮刷新页面的问题 Repeater 获取内部控件值的问题。有带码,帮忙看下 散分,欢迎到刨坑网刨视频! 输入问题? 200分求站内关键子排名原理 GridView时间显示控制!!! 來者接分,怎么樣繼承或include一個頁面的CSS、JS(在線等,急!!!) 为什么我的datagrid的updatecommand的更新会是这样? 有偿寻水晶报表 asp.net C# 高手,可以根据问题来谈报酬! JavaScript判断问题。。。 有关日期格式的问题
http://www.cnblogs.com/jxyxhz/archive/2009/03/02/1401538.html
// 存图片到数据库
protected void btnOK_Click(object sender, EventArgs e)
{
if (!file1.HasFile)
{
Response.Write("<script>alert('请选择图片文件');</script>");
return;
}
String filter1 = ".jpg,.jpeg,.gif";
String ss = System.IO.Path.GetExtension(file1.PostedFile.FileName).ToLower();
if (filter1.IndexOf(ss) == -1)
{
Response.Write("<script>alert('您选择的不是图片文件');</script>");
return;
}
Int32 iSize = file1.PostedFile.ContentLength;
String iType = file1.PostedFile.ContentType;
System.IO.Stream iStream = file1.PostedFile.InputStream;
Byte[] iByte = new byte[iSize];
iStream.Read(iByte, 0, iSize);
iStream.Close();
String str = m1.picin(iType, iSize.ToString(), iByte);
if (str != "OK")
Response.Redirect("err.aspx?msg=" + HttpUtility.UrlEncode(str));
} }
//存储过程 picin 添加新闻图片
public String picin(String pType, String pSize, Byte[] pImg)
{
SqlCommand cmd = new SqlCommand("picin", conn);
cmd.CommandType = CommandType.StoredProcedure;
//输入参数:
SqlParameter pa2 = new SqlParameter("@pType", SqlDbType.VarChar);
pa2.Value = pType;
cmd.Parameters.Add(pa2);
SqlParameter pa3 = new SqlParameter("@pSize", SqlDbType.VarChar);
pa3.Value = pSize;
cmd.Parameters.Add(pa3);
SqlParameter pa5 = new SqlParameter("@pImg", SqlDbType.Image);
pa5.Value = pImg;
cmd.Parameters.Add(pa5); try
{
this.sqlOpen();
cmd.ExecuteNonQuery();
return "OK";
}
catch (SqlException err)
{
return err.ToString();
}
finally
{
this.sqlClose();
}
}
-- 存储过程
CREATE Proc picin
(
@pType varchar(50),
@pSize varchar(50),
@pImg image
)
AS
INSERT INTO pic (pType, pSize, pImg)
VALUES (@pType, @pSize, @pImg)
GO
读取图片:
<img src='img.aspx?pID=2' />img.aspx代码
新建一个aspx,在load事件里:
protected void Page_Load(object sender, EventArgs e)
{
int pID = Convert.ToInt32(Request.QueryString["pID"]);
if (pID != 0)
{
cmd = " SELECT pID, pType, pImg FROM pic WHERE pID = " + pID;
try
{
m2.sqlOpen();
m2.read1(cmd);
if (m2.r1.Read())
{
Response.Clear();
Response.BinaryWrite((byte[])m2.r1["pImg"]);
Response.End();
}
}
finally
{
m2.sqlClose();
}
}
}
如果项目需要可以直接以二进制流的形式保存到db中
FileStream fs = new FileStream(MusicClass.Picpath, FileMode.Open, FileAccess.Read);
int imgLen = (int)fs.Length;
Byte[] ImgBinaryData = new Byte[imgLen];
fs.Read(ImgBinaryData, 0, imgLen); Com.Parameters.Add("@专辑图片", SqlDbType.Image);
Com.Parameters["@专辑图片"].Value = ImgBinaryData;读:
Byte[] byteDB = new Byte[0];
byteDB = (Byte[])(dgvMusic["专辑图片", dgvMusic.CurrentCell.RowIndex].Value);
MemoryStream stmImage = new System.IO.MemoryStream(byteDB);
this.pbImage.Image = Image.FromStream(stmImage);