在我的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。可能的原因是序列化和反序列化之间无效的流或对象版本更改。
有人能告诉我我做错了什么吗?
我也尝试将bytearray转换为字符串,然后将字符串转换回字节数组并转换为datatable.That也引发相同的错误。
谢谢。
什么样的文件是你正在上传? – 2010-05-21 11:48:14
我正在上传Excel表格。 – kranthi 2010-05-21 11:59:45