C#使用OpenMcdf

时间:2019-04-16 18:28:44

标签: c# sql-server ms-access filestream openmcdf

更新:下面留下了原始问题,因为我花了很多时间才开始了解所有操作以及这些图像将转换为哪种二进制格式。事实证明,Microsoft Access OLE绑定对象框架接收文件并将其转换为称为Microsoft复合文档文件格式的COM(当然)技术。阅读这篇文章后,我得到了启示:Uploading and Downloading BLOBs to Microsoft Access

一旦我了解了它,就可以帮助我更好地解释问题并将其转化为我真正想要完成的工作:将文件转换为MCDF格式。通过在Nuget中进行的研究,我找到了一个名为OpenMCDF的库,该库已添加到我的项目中。但是,像所有基于COM的传统技术一样,很难找到代码示例。在如何剥离MCDF标头的过程中,我大多找到了代码示例,因为显然没有人希望再以这种格式创建文件,但是我相信可以使用此库来完成。在这方面的任何帮助将不胜感激!

原始问题: 很难解释的问题,所以请忍受我。您可能需要阅读全文才能理解我的问题。基本上,我试图复制Windows Snippet Copy to Clipboard功能的复制和粘贴。我需要能够从文件中选择图像并将其转换为Windows Snippet将其剪贴板片段转换为的任何图像。

我尝试将其保存为字节,如下所示:

// Add New Part Image
var imageData = new Bitmap(path);
partImage = new PartImage();
partImage.ImageFile = File.ReadAllBytes(path);
partImage.MasterPartNumber = masterPartNumber;
db.PartImage.Add(partImage);
db.SaveChanges();

enter image description here 如上图所示,突出显示的行是通过上面的代码添加的图像,与其他行的复制粘贴方法相比。确实可以将其保存到二进制数据中,但是它的格式与片段剪贴板副本的格式不同。我认为此方法会将其保存为关联文件,而不是Snippet剪贴板复制工具所做的那样将其保存为某种二进制...屏幕截图?

为什么我想大多数人都想知道为什么要经历所有这些麻烦?我正在支持旧版Microsoft Access数据库(2010),其后端部分是SQL Server(2014)。我最近将使用“图像”数据类型的表中的列转换为工作正常的FILESTREAM表。我的问题是如何将图像输入数据库。保存的图像实际上是屏幕截图,而不是相关文件,我需要以某种方式复制它。

使用OLE绑定对象框架捕获图像。我今天才知道,我们的零件部门通过使用Windows Snippet Tool拍摄零件的屏幕快照,然后复制该片断并将其直接粘贴到OLE Bound Object Frame中来捕获图像!在框架中,您实际上可以看到图像...但是在数据库中,您可以看到Var-binary结果。

0 个答案:

没有答案