想要以与C #windowsForm中保存的格式相同的格式读取从数据库中检索的文件

时间:2013-05-20 12:38:16

标签: c# sql-server-2005

我正在使用C#Windows窗体应用程序将文档文件(word,pdf& text)插入到SQL服务器数据库中,下面的代码我用来将文件转换为二进制文件,并且我将此文件上传到数据库:

    FileInfo fileinfo = new FileInfo(file);
    string fileName = System.IO.Path.GetFileNameWithoutExtension(file);
    string extension = System.IO.Path.GetExtension(file);
    long byteSize = fileinfo.Length;
    FileStream myFileStreams = new FileStream(file, FileMode.Open, FileAccess.Read);
    BinaryReader br = new BinaryReader(myFileStreams);
    byte[] fileStream = br.ReadBytes((int)byteSize);

该文件已成功保存但当我从数据库中检索时,该文件的格式不是我用于从数据库中检索并将其保存在本地磁盘上的以下代码:

    //the file is fetch by its id and is saved in DataTable dt1 on its row[0][1]
    byte[] cv = (byte[])dt1.Rows[0][1];
    string cvName = dt1.Rows[0][0].ToString();
    string ext = dt1.Rows[0][2].ToString();

    //saved in bin
    string pathOfCv = "new\\" + cvName + ext;
    File.WriteAllBytes(pathOfCv, cv);
    File.Create(pathOfCv);

检索到的文件有不可读的文本我希望以我保存的相同格式读取,我认为文件转换有问题可能是我只是不能直接在文件中写入字节数组。

请给我一些代码示例如何解决此问题,谢谢。

1 个答案:

答案 0 :(得分:0)

也许你应该尝试使用MemoryStream 像是:

MemoryStream ms = new MemoryStream(cv);
FileStream file = new FileStream(cvName + ext, FileMode.Create,System.IO.FileAccess.Write);
byte[] bytes = new byte[ms.Length];
ms.Read(bytes, 0, (int)ms.Length);
file.Write(bytes, 0, bytes.Length);
file.Close();
ms.Close();