bool isSuccess = false; List<ImageConvert> infoList = new List<ImageConvert>(); DataTable dt = ReadDataByColumns(Server.MapPath("~/Images/data(pic).mdb"), "pic", ref isSuccess); for (int i = 0; i < dt.Rows.Count;i++ ) { try { string path = Server.MapPath("~/Images/"); if (!System.IO.Directory.Exists(path + dt.Rows[i]["UID"].ToString())) { System.IO.Directory.CreateDirectory(path + dt.Rows[i]["UID"].ToString()); } ImageConvert iConvert = new ImageConvert(); var buff= iConvert.picture= Encoding.UTF8.GetBytes(dt.Rows[i]["PIC"].ToString()); MemoryStream ms = new MemoryStream(buff); System.Drawing.Image newImage = System.Drawing.Image.FromStream(ms); newImage.Save(Server.MapPath(path + dt.Rows[i]["UID"].ToString() + "/" + dt.Rows[i]["FileName"].ToString()), System.Drawing.Imaging.ImageFormat.Jpeg); } catch (Exception ex) { continue; }
这样子会报错,参数无效,有人吗?
你设置个断点,看看buff这个变量是不是二进制数据
关键这个是以前的ACCESS数据库,以前是怎么样存进去的,我完全不知道,是不是序列化,或者有加密什么的,就更不知道了,反正是报错,你说的确实是报错的地方!
@长江边卖水的小货车:
你这样写
var buff=dt.Rows[i]["PIC"] as byte[]
@刘宏玺: 报错了,缓存区为空
@长江边卖水的小货车: 你把buff的数据给我看看我才能分析出来是什么原因
@刘宏玺: 我调试的时候,显示buff为null,一直都没有值!
@长江边卖水的小货车: 没有值不报错才怪了。。。那你查查为啥没有值
@刘宏玺: dt.Rows[i]["PIC"] as byte[]这里的["PIC"]是system.Byte[]
@刘宏玺: 这个上传图片还得申请博客,我也是醉醉的!
@刘宏玺:
@长江边卖水的小货车: var buff=dt.Rows[i]["PIC"] as byte[]
这句话后buff长啥样呢?
@刘宏玺:
@长江边卖水的小货车: 给是数据库里面的这个字段就是空的?
@刘宏玺: 不是啊,是有值的,
@长江边卖水的小货车:
给是你的这个方法ReadDataByColumns不支持二进制的读取
@刘宏玺: 啊?这个我还真的不知道,我其他的都导入到数据库了,就这个二进制的不行,不知道是不是真的就不支持二进制,你有其他读二进制的方法吗?我在网上找了一圈感觉都不行!
@长江边卖水的小货车: 我有个集成好的,抽不出来。。。
@刘宏玺: 好吧,谢谢你的耐心回答
@刘宏玺: 我的已经读出来了,确实是我的方法的问题,读不出二进制的数据,换了个方法果然弄好了,谢谢你的回答!
@长江边卖水的小货车: 这都是你自己努力的结果!我都没帮上什么忙!
@刘宏玺: 肯定有啊,问题都是一步一步的意识到并解决的,总之谢谢你的热情,哈哈!
请问楼主最后怎么解决的?