zoukankan      html  css  js  c++  java
  • 文件以二进制存入数据库和从数据库读取二进制文件


    
    
    if (FileUpload1.FileContent != null)
     {
                    int len = (int)FileUpload1.FileContent.Length;
    
    
                    string path = Server.MapPath("~/test/xx.docx");//"@d:\xx.docx";
                    FileUpload1.SaveAs( path);
                    FileStream fs = new FileStream(path,FileMode.Open,FileAccess.Read);
                    BinaryReader br = new BinaryReader(fs);
             
             FileByteEx = br.ReadBytes(len);
                /*如果长度大于int类型的最大长度时可以考虑分段进行读取
                while(redLen<total){
     
                buffer
    = new byte[size];
     
                buffer
    =br.ReadBytes(size);
     
                redLen
    += size;

                } */



    fs.Close();
     
             br.Close();

            //注只是写个大概的意思,下边创建数据库连接什么的都没有具体写。


            SqlCommand cmd=new Sqlcommand();

            string sql="insert into test([file]) values (@file)";
    SqlParameter par= new SqlParameter("@file", SqlDbType.VarBinary);
            cmd.SqlParameter=
    par;

         SqlCommand cmd = new SqlCommand();
               
            cmd.Connection = new SqlConnection(strCon);
     
            cmd.CommandType = SqlDataSourceCommandType.Text;
               
            cmd.CommandText = sql;


    // 数据库字段设置为 varbinary(MAX)

             

    }

    从数据库取出

    和普通取数据一样放在dataset中,然后从dataset中取出(转换成byte数组)

    FILE_CONTENT_B=(byte[])ds.Tables[0].Rows[0]["FILE_CONTENT_B"];

    通过下面的语句直接打开

    var filebyte = modSysFiles.FILE_CONTENT_B;//创建的文件路径
              
                string path = Server.MapPath("~/test/xx.docx"); //@"D:	estdata" + "xxx.docx";
                //按照路径实例化文件            
                var file = new FileStream(path, FileMode.Create, FileAccess.Write);
    
    
                //实例化一个用于写的 BinaryWriter            
                var bw = new BinaryWriter(file);
                //var bwr  = new BinaryReader
                //将传进来的二进制字符转换为8位无符号整数数组再写进去            
                bw.Write(filebyte);
                bw.Close();
                //关闭二进制流写入器            
                file.Close();  //关闭文件流            
                //创建Process命令            
                var cmd = new System.Diagnostics.Process();
                //创建要运行的文件或者程序            
                var startfile = new System.Diagnostics.ProcessStartInfo
                {
                    FileName = file.Name,
                    //文件完全路径                             
                    WindowStyle = ProcessWindowStyle.Normal,//Windows窗口样式                             
                    UseShellExecute = true//为true,则用默认的打开方式打开,如果是exe等,设置为false                          
                };
                cmd.StartInfo = startfile;
                cmd.Start(); //打开文件
    
    
    
  • 相关阅读:
    170829-关于AOP面向切面编程
    170826-关于spring的知识点及练习
    170814-17关于javaweb的知识点
    scrapy之手机app抓包爬虫
    tornado之WebSocket
    Tornado异步(2)
    tornado异步(1)
    爬虫之动态HTML处理(Selenium与PhantomJS )动态页面模拟点击
    爬虫之动态HTML处理(Selenium与PhantomJS )执行 JavaScript 语句
    爬虫之动态HTML处理(Selenium与PhantomJS )网站模拟登录
  • 原文地址:https://www.cnblogs.com/hbhzz/p/3240002.html
Copyright © 2011-2022 走看看