CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

image类型的字段,取出来保存成一个文件的例子?急!

楼主K_top(香奈儿)2006-07-03 15:34:07 在 .NET技术 / C# 提问

image类型的字段,取出来保存成一个文件的例子?  
  是个图片文件。 问题点数:100、回复次数:3Top

1 楼kaixin110(kydk.com)回复于 2006-07-03 15:52:19 得分 50

SqlConnection   pubsConn   =   new   SqlConnection("Data   Source=localhost;Integrated   Security=SSPI;Initial   Catalog=pubs;");  
  SqlCommand   logoCMD   =   new   SqlCommand("SELECT   pub_id,   logo   FROM   pub_info",   pubsConn);  
   
  FileStream   fs;                                                     //   Writes   the   BLOB   to   a   file   (*.bmp).  
  BinaryWriter   bw;                                                 //   Streams   the   BLOB   to   the   FileStream   object.  
   
  int   bufferSize   =   100;                                       //   Size   of   the   BLOB   buffer.  
  byte[]   outbyte   =   new   byte[bufferSize];     //   The   BLOB   byte[]   buffer   to   be   filled   by   GetBytes.  
  long   retval;                                                         //   The   bytes   returned   from   GetBytes.  
  long   startIndex   =   0;                                         //   The   starting   position   in   the   BLOB   output.  
   
  string   pub_id   =   "";                                           //   The   publisher   id   to   use   in   the   file   name.  
   
  //   Open   the   connection   and   read   data   into   the   DataReader.  
  pubsConn.Open();  
  SqlDataReader   myReader   =   logoCMD.ExecuteReader(CommandBehavior.SequentialAccess);  
   
  while   (myReader.Read())  
  {  
      //   Get   the   publisher   id,   which   must   occur   before   getting   the   logo.  
      pub_id   =   myReader.GetString(0);      
   
      //   Create   a   file   to   hold   the   output.  
      fs   =   new   FileStream("logo"   +   pub_id   +   ".bmp",   FileMode.OpenOrCreate,   FileAccess.Write);  
      bw   =   new   BinaryWriter(fs);  
   
      //   Reset   the   starting   byte   for   the   new   BLOB.  
      startIndex   =   0;  
   
      //   Read   the   bytes   into   outbyte[]   and   retain   the   number   of   bytes   returned.  
      retval   =   myReader.GetBytes(1,   startIndex,   outbyte,   0,   bufferSize);  
   
      //   Continue   reading   and   writing   while   there   are   bytes   beyond   the   size   of   the   buffer.  
      while   (retval   ==   bufferSize)  
      {  
          bw.Write(outbyte);  
          bw.Flush();  
   
          //   Reposition   the   start   index   to   the   end   of   the   last   buffer   and   fill   the   buffer.  
          startIndex   +=   bufferSize;  
          retval   =   myReader.GetBytes(1,   startIndex,   outbyte,   0,   bufferSize);  
      }  
   
      //   Write   the   remaining   buffer.  
      bw.Write(outbyte,   0,   (int)retval   -   1);  
      bw.Flush();  
   
      //   Close   the   output   file.  
      bw.Close();  
      fs.Close();  
  }  
   
  //   Close   the   reader   and   the   connection.  
  myReader.Close();  
  pubsConn.Close();  
  Top

2 楼WeekZero(∮小气的鬼∮)回复于 2006-07-03 15:57:02 得分 50

using   System;  
  using   System.Data;  
  using   System.Configuration;  
  using   System.Collections;  
  using   System.Web;  
  using   System.Web.Security;  
  using   System.Web.UI;  
  using   System.Web.UI.WebControls;  
  using   System.Web.UI.WebControls.WebParts;  
  using   System.Web.UI.HtmlControls;  
  using   System.Data.SqlClient;  
  using   System.IO;  
   
  public   partial   class   upfile_ToDB_ShowPic   :   System.Web.UI.Page  
  {  
          protected   void   Page_Load(object   sender,   EventArgs   e)  
          {  
                  string   id   =   Request.QueryString["id"];  
                  if   (id   !=   null   &&   id.CompareTo("")   !=   0)  
                  {  
                          string   connStr   =   ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString;  
                          string   SqlStr   =   "SELECT   *   FROM   test02   where   id   =   "   +   id;  
                          DataSet   ds   =   new   DataSet();  
   
                          try  
                          {  
                                  SqlConnection   conn   =   new   SqlConnection(connStr);  
                                  if   (conn.State.ToString()   ==   "Closed")   conn.Open();  
                                  SqlDataAdapter   da   =   new   SqlDataAdapter(SqlStr,   conn);  
                                  da.Fill(ds,   "test01");  
                                  if   (conn.State.ToString()   ==   "Open")   conn.Close();  
                                  if   (ds.Tables[0].Rows.Count   >   0)  
                                  {  
                                          Byte[]   FileByteArray   =(byte[])ds.Tables[0].Rows[0]["pic"];  
   
                                          File.WriteAllBytes("d:\\a.jpg",   FileByteArray);  
   
                                          Response.BinaryWrite((byte[])ds.Tables[0].Rows[0]["pic"]);  
                                          Response.End();  
                                  }  
                          }  
                          catch   (Exception   ex)  
                          {  
                                  Response.Write("数据库错误,错误原因:"   +   ex.Message);  
                                  Response.End();  
                          }  
                  }  
          }  
  }  
   
   
  关键的2行:  
  Byte[]   FileByteArray   =(byte[])ds.Tables[0].Rows[0]["pic"];  
  File.WriteAllBytes("d:\\a.jpg",   FileByteArray);Top

3 楼K_top(香奈儿)回复于 2006-07-03 16:04:07 得分 0

谢了,已经解决!Top

相关问题

关键词

得分解答快速导航

  • 帖主:K_top
  • kaixin110
  • WeekZero

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo