已有Word 2007文档,可以正常打开,通过文件流的操作存在了数据库里: private byte[] resumeDate = null;
using (resumeStream) //resumeStream是通过OpenFileDialog打开的文件流
{
this.resumeData = new byte[resumeStream.Length];
resumeStream.Read(this.resumeData, 0, System.Convert.ToInt32(resumeStream.Length));
}
在从数据库中下载
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
da.SelectCommand = new SqlCommand("SELECT Stream FROM FileTable", this.Conn);
da.Fill(dt); byte[] fileData = null;
fileData = (byte[])dt.Rows[0]["Stream"]; int arraySize = new int();
arraySize = fileData.GetUpperBound(0); //arraySize这个变量的设置从MSDN学习而来
FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write); //filePath这个string变量已经正确生成
using (fileStream)
{
fileStream.Write(fileData, 0, arraySize);
}然后打开filePath这个文件,Word 2007提示
“无法打开文件***, 因为内容有错误” --- 文件已损坏,无法打开
点击确定, 接着提示 “word在***中发现无法读取的内容,是否恢复此文档的内容?如果你信任次文档的来源,请单击“是””
我单击是之后,文件打开,内容显示正常请问如何处理这个问题谢谢
using (resumeStream) //resumeStream是通过OpenFileDialog打开的文件流
{
this.resumeData = new byte[resumeStream.Length];
resumeStream.Read(this.resumeData, 0, System.Convert.ToInt32(resumeStream.Length));
}
在从数据库中下载
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
da.SelectCommand = new SqlCommand("SELECT Stream FROM FileTable", this.Conn);
da.Fill(dt); byte[] fileData = null;
fileData = (byte[])dt.Rows[0]["Stream"]; int arraySize = new int();
arraySize = fileData.GetUpperBound(0); //arraySize这个变量的设置从MSDN学习而来
FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write); //filePath这个string变量已经正确生成
using (fileStream)
{
fileStream.Write(fileData, 0, arraySize);
}然后打开filePath这个文件,Word 2007提示
“无法打开文件***, 因为内容有错误” --- 文件已损坏,无法打开
点击确定, 接着提示 “word在***中发现无法读取的内容,是否恢复此文档的内容?如果你信任次文档的来源,请单击“是””
我单击是之后,文件打开,内容显示正常请问如何处理这个问题谢谢
一年半了,lz找到办法没有?
上传:
br = new BinaryReader((Stream)fs);
bytContent = br.ReadBytes((Int32)fs.Length);
下载:
FileStream fsnew = new FileStream(filenew, FileMode.CreateNew);
BinaryWriter brnew = new BinaryWriter(fsnew);
brnew.Write(bytContent, 0, bytContent.Length);