tempad
ReadyGo!技术成就梦想 >>防火墙 >> 请教高人如何把数据库中的二进制流转换成文件并在浏览器中输出?

请教高人如何把数据库中的二进制流转换成文件并在浏览器中输出?

ReadyGo!技术成就梦想 网络搜索 efish 2008-1-17 18:20:29

请教高人如何把数据库中的二进制流转换成文件并在浏览器中输出?

楼主hustsky(榕树)2004-09-26 17:39:44 在 .NET技术 / ASP.NET 提问

我在SQL   Server   2000的一个数据库中设计了一张表,里面有个格式为image的字段,我将.mht格式的文件转换成二进制流存入其中。  
  请问,如何在把该字段数据读出来后,将其转换回.mht格式的文件,并在浏览器中把该文件的内容显示出来?  
   
  希望高手指点如何在ASP.NET(c#)中实现这一操作。 问题点数:50、回复次数:5Top

1 楼xyzciom97(大象)回复于 2004-09-26 18:02:35 得分 10

不知对你是否有用。  
   
  //填充数据表后从数据表中获得数据  
  byte)dataTable.Rows;  
  FileStream   file   =   new   FileStream(   "c:\\aaa.mht"   ,   FileMode.Create   );  
  //写入文件  
  file.Write(   buff,0,buff.Length   );  
  Top

2 楼lxhlizhenhao(黎冠黎)回复于 2004-09-26 18:09:30 得分 20

将文件类型先存入数据库中,当然数据中要增加一个字段如fjlx,然后从数据库中提出来:  
   
   
                .........                          
                .........  
                    SqlCommand   sqlComm   =   new   SqlCommand("select   fjmc,fjlx,fjnr   from   fj   where   fjid=   @id"   ,sqlConn);  
            ....得到参数  
  sqlConn.Open   ();  
  SqlDataReader   dr=sqlComm.ExecuteReader   ();  
  if(dr.Read())  
  {  
  strTitle=dr.ToString   ();  
   
    this.Response.ContentType=dr.ToString   ();        
  Response.AddHeader("Content-Disposition","attachment;     filename="+System.Web.HttpUtility.UrlEncode(strTitle)   );      
  this.Response.BinaryWrite((byte);  
       
   
   
  this.Response.Flush();  
  Response.End   ();  
  sqlConn.Close();  
   
  大概是这样,请指点!Top

3 楼lsg2002lsg(lsg2002lsg)回复于 2004-09-26 18:20:27 得分 20

string   strid=Request.QueryString;  
  string   strconn;  
  string   strsel;  
  strconn=ConfigurationSettings.AppSettings;  
  strsel="select   *   from   gc   where   id="+strid;  
  SqlConnection   conn=new   SqlConnection(strconn);  
  SqlCommand   comm=new   SqlCommand(strsel,conn);  
  comm.CommandType=CommandType.Text;  
   
  try  
  {  
  conn.Open();  
  SqlDataReader   dr;  
  dr=comm.ExecuteReader(CommandBehavior.CloseConnection);  
   
  if(dr.Read())  
  {  
  Response.Clear();  
  Response.ContentType=dr.ToString();  
  Response.BinaryWrite((byte);  
  }  
  conn.Close();  
   
  }  
  catch(Exception   ex)  
  {  
  throw   ex;  
  }  
  Response.End();  
   
  }Top

4 楼hustsky(榕树)回复于 2004-10-14 22:30:10 得分 0

感谢各位提供建议。大家的方法和我原本设计的代码的思想基本是一样的,但问题并没有很好的解决。  
   
  后来我自己发现了问题所在:  
  对于.mht的文件Response.ContentType应该为"message/rfc822"。  
  拿其它类型的文件试了一下,不应直接使用如"mht"的原文件的扩展名作为ContentType来使用,应该使用特定类型文件的ContentType,具体应适用哪个ContentType可以参见注册表中的相关项来适用。  
  例如,.mht的文档的ContentType可以在HKEY_CLASSES_ROOT\.mht中的"ContentType"中查看到,其值为"message/rfc822"。  
  .htm的为"text/html",.xml的为"text/xml",.wma的为"audio/x-ms-wma",等等。其它文档类似。Top

5 楼cancersyf(fengzhimei)回复于 2004-10-14 23:04:53 得分 0

那现在还有什么问题呢?Top

责任编辑: efish 参与评论 查找更多:
相关文章
客户端怎样调用应用服务器中定义的用Property??? 客户端怎样调用应用服务器中定义的用Property???
ASP.NET/C#帮我看看这个问题,应该怎么解决,谢谢 ASP.NET/C#帮我看看这个问题,应该怎么解决,谢谢
讨论:用C#实现多线程多页面的IE浏览器(netscaptor… 讨论:用C#实现多线程多页面的IE浏览器(netscaptor)的设计。
请教个关于DHTMLEDIT的问题 请教个关于DHTMLEDIT的问题
高分求救--怎样使用webbrowse提取网页中类似combobo… 高分求救--怎样使用webbrowse提取网页中类似combobox中选定的值
如何确定一个表中某个int型的字段的最大值(多人同时… 如何确定一个表中某个int型的字段的最大值(多人同时操作时)
如何可以和ie共享cookie和收藏夹,ie读取cookie不用… 如何可以和ie共享cookie和收藏夹,ie读取cookie不用直接输入密码就可以访问的这个也可以自动访问
突如其来的错误,多谢指教!! 突如其来的错误,多谢指教!!
关于酒店局域网上网记费问题 关于酒店局域网上网记费问题
使用ClientDataSet郁闷! 使用ClientDataSet郁闷!
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想