在数据库中存放文件,用的是Image数据类型存没什么问题,断点看的到byte[]的长度,大小,和所存文件一样。
而取的时候就出现问题了,取出来的只有byte[]长度只有13,而存的时候是5000多的....大家帮看看是哪儿的问题存代码:yte[] Filebuffer = FileTobytes(FileUpload1.PostedFile.FileName.ToString().Trim());//这里的byte[]断点看是{byte[9729]}
                string Filetype = FileUpload1.PostedFile.FileName.ToString().Substring(FileUpload1.PostedFile.FileName.ToString().LastIndexOf("."), 4);
                SqlConnection myCon = new SqlConnection(strCon);
                string InsertStr = "Insert INTO News(Title,Context,NewTime,Files,FileType,ContentType) VALUES(@Title,@Context,@NewTime,@Files,@FileType,@ContentType) ";
                //插入数据库语句
                SqlCommand comm = new SqlCommand(InsertStr, myCon);
                comm.Parameters.Add(new SqlParameter("@Title", SqlDbType.VarChar,250));//标题
                comm.Parameters["@Title"].Value = TitleTextBox.Text.Trim();                comm.Parameters.Add(new SqlParameter("@Context", SqlDbType.Text, 16));//内容
                comm.Parameters["@Context"].Value = FreeTextBox1.Text.Trim();                comm.Parameters.Add(new SqlParameter("@NewTime", SqlDbType.DateTime, 8));//时间
                comm.Parameters["@NewTime"].Value = Convert.ToDateTime(PubTimeTextBox.Text);                comm.Parameters.Add(new SqlParameter("@Files", SqlDbType.Image, 16));//二进制
                comm.Parameters["@Files"].Value = Filebuffer;                comm.Parameters.Add(new SqlParameter("@FileType", SqlDbType.Char, 30));//数据类型
                comm.Parameters["@FileType"].Value = Filetype;                comm.Parameters.Add(new SqlParameter("@ContentType", SqlDbType.Char, 30));//数据类型
                comm.Parameters["@ContentType"].Value = filecontenttype;                myCon.Open();//打开数据库连接
                comm.ExecuteNonQuery();//添加数据
                myCon.Close();//关闭数据库取代码:byte[] data = (byte[])Ds.Tables["News"].Rows[0]["Files"];//而这里的只有{byte[16]}
FileStream fs = new FileStream(FileURL, FileMode.CreateNew);
                    fs.Write(data, 0, data.Length);                    fs.Close();
存的时候也没报错....什么问题???

解决方案 »

  1.   

    new SqlParameter("@Context", SqlDbType.Text)
    16去掉
      

  2.   

    byte[] Filebuffer = FileUpload1..FileBytes;//取文件内容的二进制形式
                    string Filetype = FileUpload1.PostedFile.FileName.ToString().Substring(FileUpload1.PostedFile.FileName.ToString().LastIndexOf("."), 4); 
                    SqlConnection myCon = new SqlConnection(strCon); 
                    string InsertStr = "Insert INTO News(Title,Context,NewTime,Files,FileType,ContentType) VALUES(@Title,@Context,@NewTime,@Files,@FileType,@ContentType) "; 
                    //插入数据库语句 
                    SqlCommand comm = new SqlCommand(InsertStr, myCon); 
                    comm.Parameters.Add(new SqlParameter("@Title", SqlDbType.VarChar,250));//标题 
                    comm.Parameters["@Title"].Value = TitleTextBox.Text.Trim();                 comm.Parameters.Add(new SqlParameter("@Context", SqlDbType.Text, 16));//内容 
                    comm.Parameters["@Context"].Value = FreeTextBox1.Text.Trim();                 comm.Parameters.Add(new SqlParameter("@NewTime", SqlDbType.DateTime, 8));//时间 
                    comm.Parameters["@NewTime"].Value = Convert.ToDateTime(PubTimeTextBox.Text);                 comm.Parameters.Add(new SqlParameter("@Files", SqlDbType.Image));//二进制 
                    comm.Parameters["@Files"].Value = Filebuffer;                 comm.Parameters.Add(new SqlParameter("@FileType", SqlDbType.Char, 30));//数据类型 
                    comm.Parameters["@FileType"].Value = Filetype;                 comm.Parameters.Add(new SqlParameter("@ContentType", SqlDbType.Char, 30));//数据类型 
                    comm.Parameters["@ContentType"].Value = filecontenttype;                 myCon.Open();//打开数据库连接 
                    comm.ExecuteNonQuery();//添加数据 
                    myCon.Close();//关闭数据库