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控件,如何上传图片到服务器并保存图片路径到数据库?

andrid 上传图片 asp.net 后台接收并保存

ASP.NET 保存图片(GDI+ 中发生一般性错误)

ASP.NET利用.FileUpload上传图片并将图片名称保存到数据库,我要具体的代码

ASP.net 如何实现上传图片的调整和裁减