【发布时间】:2010-05-21 09:35:36
【问题描述】:
在我的 aspx 页面中,我有一个 HTML 输入文件类型,它允许用户浏览电子表格。一旦用户选择要上传的文件,我想读取电子表格的内容并将内容存储到 mysql 数据库表中。
我正在使用以下代码读取上传文件的内容并将其转换为数据表,以便将其插入数据库表中。
if (filMyFile.PostedFile != null)
{
// Get a reference to PostedFile object
HttpPostedFile myFile = filMyFile.PostedFile;
// Get size of uploaded file
int nFileLen = myFile.ContentLength;
// make sure the size of the file is > 0
if (nFileLen > 0)
{
// Allocate a buffer for reading of the file
byte[] myData = new byte[nFileLen];
// Read uploaded file from the Stream
myFile.InputStream.Read(myData, 0, nFileLen);
DataTable dt = new DataTable();
MemoryStream st = new MemoryStream(myData);
st.Position = 0;
System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
dt=(DataTable)formatter.Deserialize(st);
}
}
但是当我尝试将字节数组反序列化为数据表时出现以下错误。
二进制流“0”不包含有效的 BinaryHeader。可能的原因是无效的流或序列化和反序列化之间的对象版本更改。
谁能告诉我我做错了什么?
我也试过将字节数组转换为字符串,然后将字符串转换回字节数组并转换为数据表。这也抛出了同样的错误。
谢谢。
【问题讨论】:
-
你上传的是什么文件?
-
我正在上传 Excel 表格。
标签: c# asp.net serialization