图片的存储问题

Magicwords 2008-05-22 08:38:13
现在要实现这样的功能:

调用别人的接口获的图片的二进制格式的数据,然后我将其写到某个文件夹下面,数据库中保存一个地址.图片有更新的时候把旧的图片删除

上面的过程具体代码应该如何实现了?C#版的.

如果是一个站里中的一个文件专门存放图片,保存图片地址的时候的在决对地址和相对地址上有没有什么要注意的地方?
...全文
105 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Magicwords 2008-05-22
  • 打赏
  • 举报
回复
我靠,,,我以为写图片跟一般的文件不一样了,其实是一样的,就这么简单,,,,

拖管下的代码如下:


FileStream^ fw = File::OpenWrite(L"D:\\test\\test.jpg");
BinaryWriter^ bw = gcnew BinaryWriter(fw);
bw->Write(imgData);
bw->Close();
fw->Close();

谢谢各位,还有这个问题请大家帮忙解决下:
如果是存到数据库中的,使用Response.BinaryWrite的话就的有一个单独的页面专门用来写(显示)图片,现在我想这样做:把图片写到客户端的某个地方如cache中,然后页面上用image控件引用这个地址,这样要如何做了,?"
Magicwords 2008-05-22
  • 打赏
  • 举报
回复
我现在就是用的那种方法,问题中是想换一种方法,如果还是用2楼的方法的话就换成这样的实现

"还有一个问题就是:如果是存到数据库中的,使用Response.BinaryWrite的话就的有一个单独的页面专门用来写(显示)图片,现在我想这样做:把图片写到客户端的某个地方如cache中,然后页面上用image控件引用这个地址,这样要如何做了,?"
LutzMark 2008-05-22
  • 打赏
  • 举报
回复
2楼的办法很详细了
up
Magicwords 2008-05-22
  • 打赏
  • 举报
回复
amandag
能写点示例代码吗,写图片和删的
Magicwords 2008-05-22
  • 打赏
  • 举报
回复
第一个问题:是否可以考虑存储到数据库呢;如果不存储到数据库那么你的重新以的创建一个图片然后把那些数据写到图片中去;

就是这个不会搞,把数据写图片,
amandag 2008-05-22
  • 打赏
  • 举报
回复
只要日期事件有变动,就用System.IO.FileInfo类下的方法删除文件即可

但是
1. 要保证此操作的用户有读写权限
2. 要先上传成功再删除原有图片
yb00k 2008-05-22
  • 打赏
  • 举报
回复
第一个问题:是否可以考虑存储到数据库呢;如果不存储到数据库那么你的重新以的创建一个图片然后把那些数据写到图片中去;
至于有更新的图片,这个估计不好弄吧,除非在接口处能有一个时间,同时本系统数据库在存储一个时间然后进行一个比较,如果比较不同就把新的重新在写一次到本系统中;
第二个:不管是相对还是绝对,都可以只是在你读出来的时候根据相对的或者绝对的路径把图片显示出来就可以了.
Magicwords 2008-05-22
  • 打赏
  • 举报
回复
还有一个问题就是:如果是存到数据库中的,使用Response.BinaryWrite的话就的有一个单独的页面专门用来写(显示)图片,现在我想这样做:把图片写到客户端的某个地方如cache中,然后页面上用image控件引用这个地址,这样要如何做了,?
yuanmanguo 2008-05-22
  • 打赏
  • 举报
回复
关注
Magicwords 2008-05-22
  • 打赏
  • 举报
回复
"你也可以将它存放到你要的位置。 "
楼上的兄台,我现在就是这样实现的,但是我想把实现方法换成数据库中只存地址的,图片放到一个文件下面,
kbryant 2008-05-22
  • 打赏
  • 举报
回复
关注
叶子 2008-05-22
  • 打赏
  • 举报
回复
ASP.NET如何存取SQL Server数据库图片


 SQL Server提供了一个特别的数据类型:image,它是一个包含binary数据的类型。下边这个例子就向你展示了如何将文本或照片放入到数据库中的办法。在这篇文章中我们要看到如何在SQL Server中存储和读取图片。
  1、建立一个表:

  在SQL SERVER中建立这样结构的一个表:

列名 类型 目的
ID Integer 主键ID
IMGTITLE Varchar(50) 图片的标题
IMGTYPE Varchar(50) 图片类型. ASP.NET要以辨认的类型
IMGDATA Image 用于存储二进制数据


  2、存储图片到SQL SERVER数据库中

  为了能存储到表中,你首先要上传它们到你的WEB 服务器上,你可以开发一个web form,它用来将客户端中TextBox web control中的图片入到你的WEB服务器上来。将你的 encType 属性设置为:myltipart/formdata.

Stream imgdatastream = File1.PostedFile.InputStream;
int imgdatalen = File1.PostedFile.ContentLength;
string imgtype = File1.PostedFile.ContentType;
string imgtitle = TextBox1.Text;
byte[] imgdata = new byte[imgdatalen];
int n = imgdatastream.Read(imgdata,0,imgdatalen);
string connstr=((NameValueCollection)Context.GetConfig("appSettings"))["connstr"];

SqlConnection connection = new SqlConnection(connstr);

SqlCommand command = new SqlCommand
         ("INSERT INTO ImageStore(imgtitle,imgtype,imgdata)
         VALUES ( @imgtitle, @imgtype,@imgdata )", connection );

SqlParameter paramTitle = new SqlParameter
         ("@imgtitle", SqlDbType.VarChar,50 );

paramTitle.Value = imgtitle;
command.Parameters.Add( paramTitle);

SqlParameter paramData = new SqlParameter( "@imgdata", SqlDbType.Image );
paramData.Value = imgdata;
command.Parameters.Add( paramData );

SqlParameter paramType = new SqlParameter( "@imgtype", SqlDbType.VarChar,50 );
paramType.Value = imgtype;
command.Parameters.Add( paramType );

connection.Open();
int numRowsAffected = command.ExecuteNonQuery();
connection.Close();

  3、从数据库中恢复读取

  现在让我们来从SQL Server中读取我们放入的数据吧!我们将要输出图片到你的浏览器上,你也可以将它存放到你要的位置。

private void Page_Load(object sender, System.EventArgs e)
{
 string imgid =Request.QueryString["imgid"];
 string connstr=((NameValueCollection)
 Context.GetConfig("appSettings"))["connstr"];
 string sql="SELECT imgdata, imgtype FROM ImageStore WHERE id = " + imgid;
 SqlConnection connection = new SqlConnection(connstr);
 SqlCommand command = new SqlCommand(sql, connection);
 connection.Open();
 SqlDataReader dr = command.ExecuteReader();
 if(dr.Read())
 {
  Response.ContentType = dr["imgtype"].ToString();
  Response.BinaryWrite( (byte[]) dr["imgdata"] );
 }
 connection.Close();
}

  要注意的是Response.BinaryWrite 而不是Response.Write.
Ny-6000 2008-05-22
  • 打赏
  • 举报
回复
我使用VB.net,


C#接触不多

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧