数据库Image类型写入文本文件及文本文件写入数据库Image

 
ExpandedBlockStart.gif
  

 

代码
 
#region  数据库表中Image类型(二进制)写入文本文件
 
protected   void  Button1_Click( object  sender, EventArgs e)
    {
        
string  arg_msg  =   "" ;
        
string  str  =   "" ;

        
string  ls_sql  =   " select * from r3_oa_image where billid=2 " ;
        DataTable dt 
=  cs_con.Select(ls_sql,  null ref  arg_msg).Tables[ 0 ];
        
if  (dt.Rows.Count  >   0 )
        {
            
string  add_file  =   "" ;
            
string  file_name  =   "" ;
            
for  ( int  i  =   0 ; i  <  dt.Rows.Count; i ++ )
            {
                
byte [] image  =  ( byte [])dt.Rows[i][ " add_file " ]; // 其中add_file字段是Image类型
                StringBuilder lkj  =   new  StringBuilder();
                
for  ( int  k  =   0 ; k  <  image.Length; k ++ )
                {
                    lkj.Append(
" , "   +  image[k].ToString().Trim());
                }
               
// 导入到文本文件
                 string  filename  =   @" d:\test.txt " ;
              FileInfo fileinfo 
=   new  FileInfo(filename);
              
using  (FileStream fs  =  fileinfo.OpenWrite())
              {
                    StreamWriter sw 
=   new  StreamWriter(fs);
                    sw.BaseStream.Seek(
0 , SeekOrigin.End);
                    sw.Write(lkj);
                    sw.Flush();
                    sw.Close();
              }
            }
        }
    }
#endregion  

 

 

ExpandedBlockStart.gif 代码

#region   文本文件转换成二进制存入数据库
protected   void  Button2_Click( object  sender, EventArgs e)
    {

        
string  filename  =   @" d:\test.txt " ;
        StreamReader sr 
=   new  StreamReader(filename, System.Text.Encoding.Default);
        String lkj 
=  sr.ReadToEnd();
        sr.Close();
        
string [] strs  =  lkj.ToString().Trim( ' , ' ).Split( ' , ' );
        
byte [] textByte  =   new   byte [ 35811 ];
        
for  ( int  j  =   0 ; j  <   951296 ; j ++ ) // 这里的951296是前面方法中image.length,这里有点BUG获取不到大小,使用byte数组定义大小,
        {
            textByte[j] 
=  Convert.ToByte(strs[j]);
        }
        SqlConnection con 
=  cs_con.DBconn();
        SqlCommand command 
=   new  SqlCommand();
        command.Connection 
=  con;
        command.CommandText 
=   " insert into r3_oa_image(billid,add_file,upload_time,file_name,remark) values(1,@add_file,getdate(),'npActiveXFirefox4x.xpi','打印控件'); " ;
        command.Parameters.Add(
" @add_file " , SqlDbType.Image, textByte.Length,  " add_file " );
        command.Parameters[
" @add_file " ].Value  =  textByte;
        con.Open();
        command.ExecuteNonQuery();
        con.Close();

    }
#endregion  

 

 下载:

 

 

ExpandedBlockStart.gif 代码
  protected   void  Button3_Click( object  sender, EventArgs e)
    {
        
string  arg_msg  =   "" ;
        
if  ( ! file_down( " 1 " ref  arg_msg))
        {
            ScriptManager.RegisterStartupScript(
this this .GetType(),  " js " " alert(' "   +  arg_msg.ToString().Trim()  +   " '); " true );
        }
    }


    
#region  文件下载
    
private   bool  file_down( string  bill,  ref   string  arg_msg)
    {
        
bool  rslt  =   true ;
        
try
        {
            
if  (bill  ==   null   &&  bill.Trim().Length  >   0 )
            {
                rslt 
=   false ;
                arg_msg 
=   " 下载失败 " ;
                
goto  ext_file_down;
            }

            Byte[] bytes;
            
string  ls_down_file  =   " select * from r3_oa_image WHERE  billid= "   +  bill;
            DataTable dt 
=  cs_con.Select(ls_down_file,  null ref  arg_msg).Tables[ 0 ];
            bytes 
=  (Byte[])(dt.Rows[ 0 ][ " add_file " ]);
            
string  fileName  =  dt.Rows[ 0 ][ " file_name " ].ToString().Trim();
            Response.ClearContent();
            Response.ClearHeaders();
            Response.ContentType 
=   " application/octet-stream " ;   //  设置输出流的Http MIME类型 // 通知浏览器下载文件而不是打开
            Response.AddHeader( " Content-Disposition " " attachment; filename= "   +  HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));  // fileName为需要下载的文件名
            Response.BinaryWrite(bytes);   //  写入输入流
            Response.Flush();   //  向客户端发送数据流
            Response.End();
        }
        
catch  (Exception ex_file_down)
        {
            rslt 
=   false ;
            arg_msg 
=   " 下载失败: "   +  ex_file_down.Message;
            
goto  ext_file_down;
        }
    ext_file_down: ;
        
return  rslt;
    }
    
#endregion

 

 数据库表中IMAGE类型字段的内容写入到txt文档(即文本文件)Button1_Click

用户也可以从写入的文本文件通过Button2_Click的方法写入数据库

用户功能下载:Button3_Click的内容

 

主要是如下一个 Setup_online.msi上传到数据库,保存至add_file字段

通过button1的方法把add_file字段的内容写入test.txt文本文件,并保存,

 如果某个程序需要Setup_online.msi的内容,即只要拷贝test.txt文件,通过button2即可,上传至数据库

然后通过下载功能既可以得到Setup_online.msi的文件

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/hnczliaoxueping/archive/2010/08/13/1799147.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值