以前一直是把文件转为数据流存入数据库保存,实例多是应用在图片存储上。
如今需要把Excel文件以二进制流存入数据库中,当用户需要做Excel数据分析时,得先把数据流创建为一个文件,然后再对这个文件进行处理。
上传文件以二进制存储数据库中,Insus.NET在这里就不做演示了,因为在Insus.NET的博客能找得到。
下面是演示二进制数据流创建文件。
//
创建一个临时文件夹
string tempPath = " ~/Temp/ " ;
// 判断是否存在
if ( ! Directory.Exists(Server.MapPath(tempPath)))
{
// 如果不存在,创建它
Directory.CreateDirectory(Server.MapPath(tempPath));
}
// 判断数据库是否存此笔记录
if (objKqUploadFile.GetFileByPrimaryKey(pk).Rows.Count > 0 )
{
DataRow dataRow = objxxx.GetFile(pk).Rows[ 0 ];
// 取得原来的文件名并和临时文件夹组成fullName。
string filePath = tempPath + dataRow[ " OldFileName " ].ToString();
// 数据流创建文件,使用file的Create的方法。
using (FileStream fileStream = File.Create(Server.MapPath(filePath)))
{
// 取得数据库的二进制
byte [] buffer = ( byte [])dataRow[ " ExcelFile " ];
// 写文件。
fileStream.Write(buffer, 0 , buffer.Length);
}
}
string tempPath = " ~/Temp/ " ;
// 判断是否存在
if ( ! Directory.Exists(Server.MapPath(tempPath)))
{
// 如果不存在,创建它
Directory.CreateDirectory(Server.MapPath(tempPath));
}
// 判断数据库是否存此笔记录
if (objKqUploadFile.GetFileByPrimaryKey(pk).Rows.Count > 0 )
{
DataRow dataRow = objxxx.GetFile(pk).Rows[ 0 ];
// 取得原来的文件名并和临时文件夹组成fullName。
string filePath = tempPath + dataRow[ " OldFileName " ].ToString();
// 数据流创建文件,使用file的Create的方法。
using (FileStream fileStream = File.Create(Server.MapPath(filePath)))
{
// 取得数据库的二进制
byte [] buffer = ( byte [])dataRow[ " ExcelFile " ];
// 写文件。
fileStream.Write(buffer, 0 , buffer.Length);
}
}