首页 新闻 会员 周边 捐助

asp.net反序列化出现输入流是无效的二进制格式。开始内容(以字节为单位)是: 68-74-74-70-3A-2F-2F-62-6C-6F

0
悬赏园豆:40 [已解决问题] 解决于 2015-06-28 20:13

求助!我从前台上传一个execl表格,在后台反序列化出现“其他信息: 输入流是无效的二进制格式。开始内容(以字节为单位)是: 68-74-74-70-3A-2F-2F-62-6C-6F-67-2E-63-73-64-6E-2E...”错误。。。。。
代码是:
public string ImportCompany()
{
HttpPostedFileBase table = Request.Files["table"];
ie.ExcelToDataTable(table.InputStream);
return null;
}

public List<object> status { get; set; }

public bool ExcelToDataTable(Stream sm)
{
status = new List<object>();
status.Add(2);
status.Add("正在读取数据......");
byte[] buff = new byte[sm.Length];
sm.Read(buff, 0, (int)sm.Length);
BinaryFormatter b = new BinaryFormatter();
b.TypeFormat = System.Runtime.Serialization.Formatters.FormatterTypeStyle.TypesAlways;
DataTable t = (DataTable)b.Deserialize(new MemoryStream(buff));
return true;
}

李贵发的主页 李贵发 | 初学一级 | 园豆:123
提问于:2014-07-26 20:05
< >
分享
最佳答案
0

两种可能性产生这种错误

1.在序列化时没有正确地将类型信息写入二进制流

2.流的长度已超界,你强制将long型的数据长度截断为int导致流的不完整:

sm.Read(buff, 0, (int)sm.Length);

如果过文件很大或数据量多时(对象实例庞大)这种读取就读不全,要使用while 以块方式从流中读取。

 

收获园豆:40
Ray Liang | 菜鸟二级 |园豆:426 | 2014-07-27 00:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册