asp.net中如何保存图片对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net中如何保存图片对象相关的知识,希望对你有一定的参考价值。
我要的是保存图片本身,不是通过保存它的地址来保存或取出图片
将图片保存到数据库中:【步骤1】以二进制方式读取图像文件
//利用FileStream读取制定路径的文件
FileStream fs = new FileStream(this.txtImagePath.Text, FileMode.Open);
int iLength = int.Parse(fs.Length.ToString());//获取当前文件的长度
Byte[] fileByte = new Byte[iLength];//创建一个byte[]的数组,用来保存文件的内容
fs.Read(fileByte, 0, iLength);//通过Read方法,把文件的内容读取到byte[]数组中。
fs.Dispose();
【步骤2】将信息插入到数据库中
SqlConnection conn = new SqlConnection(@"server=.\SQLEXPRESS;database=ImageDataBase;uid=sa");
//插入数据库
string strSql = "Insert Into tbl_Image (ImageFile) Values(@img)";
SqlCommand cmd = new SqlCommand(strSql, conn);
cmd.Parameters.Add("@img", SqlDbType.Image, iLength).Value = fileByte;
//通过赋值保存的图片的参数的值,为SqlDbType.Binary
conn.Open(); //打开连接
cmd.ExecuteNonQuery(); //执行命令
conn.Close();
将图片从数据库中读取显示:
【步骤1】从数据库中读取Image字段信息
Byte[] fileContent;
using (SqlConnection conn = new SqlConnection(@"server=.\SQLEXPRESS;database=ImageDataBase;uid=sa;pwd=12345"))
string strSql = "select ImageFile from tbl_Image";
SqlCommand cmd = new SqlCommand(strSql, conn);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
//以上步骤完成一般的SqlCommand的命令的执行,
//返回了一个SqlDataReader把图片的内容赋值到一个byte[]数组上。
if (dr.Read())
fileContent = (Byte[])dr["ImageFile"];
else
fileContent = new Byte[0];
dr.Close();
【步骤2】将二进制信息显示在PictureBox控件中
//通过内存流MemoryStream,
//把byte[]数组fileContent加载到Image中并赋值给图片框的Image属性,
//让数据库中的图片直接显示在窗体上。
MemoryStream ms = new MemoryStream(fileContent, 0, fileContent.Length);
this.pbShowImage.Image = Image.FromStream(ms);
//关闭内存流
ms.Close();
参考资料:http://www.dingos.cn/index.php?topic=982.0
参考技术A <form id="form1"method="post"runat="server"><Asp:Hyperlink
id="Hyperlink1"
Runat="server"
ImageUrl="图片存储的位置"
NavigateUrl="你要连接的位置"
/>
</form>
private void page_load(object sender ,System.EventArgs e)
添加你要保留的 并用语句表示 就OK
参考技术B 用byte数组
ASP.NET上传控件上传图片
使用上传控件上传图片时,如何将其名称重命名成永远不重复的名称,并结合扩展名形成一个新的完整的图片名称保存到数据库中?
using System.IO; //引入命名空间//上传方法
private void Upimage()
if(File1.Value!="")
string fileContentType = File1.PostedFile.ContentType;//获取文件类型
//判断文件类型.只能是 BMP GIF pjpeg swf
if (fileContentType == "image/bmp" || fileContentType == "image/gif" || fileContentType == "image/pjpeg" || fileContentType == "image/swf")
//判断文件大小
if (File1.PostedFile.ContentLength / 1024 < 2000)
string name = File1.PostedFile.FileName; // 客户端文件路径
FileInfo file = new FileInfo(name);
//获取文件名称
//把当前时间取出,组成字符串,加入文件名称,防止重复命名
string fileName = System.DateTime.Now.ToString().Replace("-", "").Replace(" ", "").Replace(":", "") + file.Name;//文件名称
string pathss = Server.MapPath("Upimage") + "\\" + fileName;//服务器保存路径
try
//上传文件
Label2.Text = "正在上传,请等待...";
File1.PostedFile.SaveAs(Server.MapPath("Upimage") + "\\" +
fileName);
//把基本信息写进数据库,保存图片在服务器的路
cc="文件:"+fileName+"上传成功!";
Open();
this.Label2.Text=fileName;
this.Im2.Visible=true;
this.Im1.Visible=false;
catch (Exception ex)
cc = "错误: " + ex.Message.ToString();
Open();
this.Im1.Visible = true;
this.Im2.Visible = false;
else
cc = "对不起,文件太大.";
Open();
this.Im1.Visible = true;
this.Im2.Visible = false;
else
cc = "请上传正确文件格式";
else
hh();
参考技术A 这个就以系统时间而且还要带上秒为命名了,就不会重复的,不可能在一秒内上传两张图片呀。 参考技术B 要吗你就是随机生成字符串,要吗就是以时间为名字,精确到毫秒就应该差不多了啊
以上是关于asp.net中如何保存图片对象的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET中如何上传图片到服务器所制定的一个文件夹中去?
ASP.NET+C# FILEUPLOAD控件,如何上传图片到服务器并保存图片路径到数据库?