【问题标题】:Retrieving Compressed files from database从数据库中检索压缩文件
【发布时间】:2012-09-11 16:07:40
【问题描述】:

我有一个 SQL Server 2008-R2 数据库,其中有一个存储不同类型文件(Word Docs、PDF、TIF 等)的表,我可以使用以下方法从数据库中成功检索这些文件:

私有 void GetFilesFromDatabase() { 尝试 { const string connStr = @"数据源=localhost\SQLInstance;初始目录=MyData;集成安全=True;"; //初始化SQL Server连接。 SqlConnection CN = new SqlConnection(connStr);

            //Initialize SQL adapter.
            SqlDataAdapter ADAP = new SqlDataAdapter("Select ole_id, ole_object From OLE Where ole_id = 21601", CN);

            //Initialize Dataset.
            DataSet DS = new DataSet();

            //Fill dataset with FilesStore table.
            ADAP.Fill(DS, "FilesStore");

            //Get File data from dataset row.
            byte[] FileData = (byte[])DS.Tables["FilesStore"].Rows[0]["ole_object"];

            string FileName = @"C:\Temp\Text.doc";
            //Write file data to selected file.
            using (FileStream fs = new FileStream(FileName, FileMode.Create))
            {
                fs.Write(FileData, 0, FileData.Length);
                fs.Close();
            }

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

根据该特定行中包含的其他信息,我正在检索的这个文件是一个 Word Doc 文件。当我在将文件检索到磁盘后尝试打开文件时,所有数据似乎都是乱码,无法读取。现在我相信这些文件是在保存到数据库之前被压缩的,但我不知道如何解压缩它们以便可以查看它们,关于如何实现这一点的任何想法?我的最终目标是将这些图像移动到另一个数据库中。

【问题讨论】:

    标签: c# sql-server-2008 blob compression


    【解决方案1】:

    您保存文件的代码看起来不错。假设您的原始数据是 .DOC 文件,并且在保存您的运气后得到了错误的文件。您可能想在二进制编辑器(即 Visual Studio 的编辑器)中查看文件的内容,以确认该文件没有明显不同(文本/图像......)。

    您需要询问文件在数据库中的存储方式。无法远程回答这个问题,因为它可能被压缩、加密、分割成块,甚至被简单地破坏。

    【讨论】:

    • 显然,开发人员只有在支付费用以检索文件的情况下才会帮助我的客户。我在想这些文件可能是 OLE 对象,因为那是列的名称,但数据类型是 Image。这肯定很奇怪。
    猜你喜欢
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 2011-07-29
    • 2014-01-05
    相关资源
    最近更新 更多