【发布时间】:2017-07-28 18:19:45
【问题描述】:
我有一个用 Visual Basic 制作的旧应用程序,可以将文档作为 OLE 对象上传和下载。将其检索到 SQL Server 数据库,该数据库将它们存储在 varbinary(max) 字段中。但是,这些 bin 的格式与常规文件不同,因为 OLE 以自己的方式构建它们。
我想通过使用 SQL 的 .NET C# 应用程序批量下载所有这些文档,但我找不到方法。我曾尝试使用SqlDataReader、MemoryStream 和FileStream 将二进制数据复制到一个新文件中,但他们直接解释了这些信息,而不是以 OLE 构造它们的方式。因此,生成的文件已损坏。
是否有可以正确解释此 OLE 二进制文件的类?旧应用程序使用了 OLE Container 组件,但几年后它们就不存在了。
【问题讨论】:
-
你是在说OLE Structured Storage 还是直接说
IPersistStorage? -
如果是 OSS,那么假设您可以将 varbinary 保存到磁盘,您可以使用 Microsoft 的 OLE SS 查看器之类的工具从古代版本的档案中查看此 c++ 示例msdn.microsoft.com/en-us/library/windows/desktop/…。还有一篇不错的文章here
-
我尝试使用 OSS Viewer 打开一个包含 varbinary 的文件,但它不让我打开它,说它不是结构化存储文件。
-
我认为最简单的方法是让您在数据库上创建一个小文件,将生成的 varbinary 转储到某个地方,然后希望有人知道如何打开它
标签: c# .net sql-server binaryfiles ole