.NET中如何循环遍历一个文件夹中的图片并将图片以二进制的方式存入sqlserver数据库
我有一个文件夹,里面有N张图片,我需要把这个文件夹里的所有图片以二进制的方式存到数据库里,数据库里有两列,ID和img,一个ID对应一个解析过后的二进制,求详细代码,最好...
我有一个文件夹,里面有N张图片,我需要把这个文件夹里的所有图片以二进制的方式存到数据库里,数据库里有两列,ID和img,一个ID对应一个解析过后的二进制,求详细代码,最好前台和后台都有,asp.net的,谢谢
展开
展开全部
public void ToImg(Image img, String name) //插入图片
{
#region 上传文件办法
//FileStream fs = new FileStream(Application.StartupPath+@"/gy.gif", FileMode.Open, FileAccess.Read);
//BinaryReader br = new BinaryReader(fs);
//byte[] photo = br.ReadBytes((int)fs.Length);
// br.Close();
//fs.Close();
#endregion
//把图片转换成二进制
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] photo = ms.GetBuffer();
ms.Close();
//存储字段
OleDbCommand cmd = new OleDbCommand("INSERT INTO 下单表(订票人, 识别码) VALUES(@CategoryName,@Picture)", conn);
cmd.Parameters.Add("@CategoryName", OleDbType.VarChar, 15).Value = name;
cmd.Parameters.Add("@Picture", OleDbType.Binary, photo.Length).Value = photo;
cmd.ExecuteNonQuery();
}
public void Pix(PictureBox px, String name) //显示图片
{
String sql = "Select 识别码 from 下单表 where 订票人='" + name + "'";
byte[] imagebytes = null;
OleDbCommand com = new OleDbCommand(sql, conn);
OleDbDataReader dr = com.ExecuteReader();
while (dr.Read())
{
imagebytes = (byte[])dr.GetValue(0);
}
MemoryStream ms = new MemoryStream(imagebytes);
Bitmap bmpt = new Bitmap(ms);
px.Image = bmpt;
px.SizeMode = PictureBoxSizeMode.StretchImage;
}
这是数据库读取和存储图片的方法,至于遍历文件夹,你自己找下例子吧,我是个懒人,太无聊的事情不做
追问
二进制存储和读取我弄出来了,就是不知道怎么加循环遍历,把循环遍历和存数结合
追答
DirectoryInfo theFolder = new DirectoryInfo(@"路径");
DirectoryInfo[] dirInfo = theFolder.GetDirectories();
//遍历文件夹内所有子文件夹
foreach (DirectoryInfo NextFolder in dirInfo)
{
FileInfo[] fileInfo = NextFolder.GetFiles();
foreach (FileInfo NextFile in fileInfo) //遍历所有文件
{
String imgPath="";
Image img=img.FromFile(NextFile.Path);
ToImg(img,NextFile.Name); //利用上面函数
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询