我在网上找到的一般都是用这种方法从SQL里读取IMAGE属性的字段,并赋值给IMAGE对象MemoryStream ms = new MemoryStream((byte[])reader[2]);//这里得到的并不是二进制流内容,而是一个数据类型的说明
Image image = Image.FromStream(ms, true);//这里提示参数错误我用的.NET2005和SQL2005,为什么这种方法在我的程序里却不行,,,,
我在调试窗口里看到(byte[])reader[2]读出来的数据却只有13维数,而我存进数据库里的是3000多维
而且(byte[])reader[2]的13维数内容并不是二进制流,而是"System.byte[]"这个字符串(这个字符串刚好13位).....
通过这里我就知道MS得到的的并不是二进制内容,而是数据类型.....我就郁闷了,别人的代码都是这样写的,为什么到我的机器上就不行,我把别人的代码放在我本地运行,重新做数据库,reader[2]照样得到的还是数据类型,而不是二进制流内容.
哪位大虾帮帮我!!!!!!!!!!
Image image = Image.FromStream(ms, true);//这里提示参数错误我用的.NET2005和SQL2005,为什么这种方法在我的程序里却不行,,,,
我在调试窗口里看到(byte[])reader[2]读出来的数据却只有13维数,而我存进数据库里的是3000多维
而且(byte[])reader[2]的13维数内容并不是二进制流,而是"System.byte[]"这个字符串(这个字符串刚好13位).....
通过这里我就知道MS得到的的并不是二进制内容,而是数据类型.....我就郁闷了,别人的代码都是这样写的,为什么到我的机器上就不行,我把别人的代码放在我本地运行,重新做数据库,reader[2]照样得到的还是数据类型,而不是二进制流内容.
哪位大虾帮帮我!!!!!!!!!!
这是通过浏览某图片,把他存放到数据库中
string filename = txt_filename.Text;
string filecomment = txt_filecomment.Text;
string SlaveFileName = FileUpload1.PostedFile.FileName;
byte[] FileContent_img = null;
DateTime UploadTime = DateTime.Now.Date; string id = lbl_id.Text;
RemoteRule remoteRule = (RemoteRule)GetRemoteingObjectByType(typeof(RemoteRule), "remoterule");
DataSet ds = new DataSet();
if (id == "")
{
ds = remoteRule.GetRuleByID(-1);
DataRow dr = ds.Tables[0].NewRow();
if (SlaveFileName != "")
{
//读取所上传的文件的二进制流
HttpPostedFile file1 = FileUpload1.PostedFile;
int filelength = Convert.ToInt32(file1.InputStream.Length);
FileContent_img = new byte[filelength];
file1.InputStream.Read(FileContent_img, 0, filelength);//这里所说的二进制流表现为什么样
}
else
{
SlaveFileName = null;
} dr["FileName_ch"] = filename;
dr["FileDesc_ch"] = filecomment;
dr["SlaveFileName_ch"] = SlaveFileName;
dr["FileContent_img"] = FileContent_img;
dr["UploadUser_ch"] = this.SystemModuleSettings.UserManage.CurrUserInfo["RealName"].ToString();
dr["UploadTime_dt"] = UploadTime;
ds.Tables[0].Rows.Add(dr);
string result = remoteRule.InsRule(ds);
if (result == "")
{
Response.Write(" <script>alert('插入不成功') </script>");
}
else
{
if (result != "f")
{
Response.Write(" <script>alert('插入成功') </script>");
ViewState["PageState"] = "edit";
lbl_id.Text = result.Substring(result.IndexOf(",") + 1);
setControlsValue();
}
else
{
Response.Write(" <script>alert('插入不成功') </script>");
}
}
}
--
显示图片的byte[] Image_img = (byte[])ds_image.Tables[0].Rows[0]["Image_im"];
if (Image_img.Length == 0)
return;
int filelength = Image_img.Length;
string imageName = ds_image.Tables[0].Rows[0][1].ToString() + "1" + ".jpg";
string myUrl = HttpContext.Current.Server.MapPath(this.Request.ApplicationPath) + @"\TempDownLoad\" + imageName;
FileStream fs = new FileStream(myUrl, FileMode.OpenOrCreate);
BinaryWriter w = new BinaryWriter(fs);
w.BaseStream.Write(Image_img, 0, filelength);
w.Flush();
w.Close(); Image1.ImageUrl = Context.Request.ApplicationPath + "/TempDownLoad/" + imageName;
Bitmap bitmap = new Bitmap(myUrl);
Image1.Width = bitmap.Width;
Image1.Height = bitmap
我的数据库中字段类型是 image
//这里得到的并不是二进制流内容,而是一个数据类型的说明,
//注意数据库中索引的顺序是以0开始的,第2个字段(实际上是第三个物理字段)确实是你存储图片内容的Image字段吗
Image image = Image.FromStream(ms, true);//这里提示参数错误