我有文档开发者版本6.6。我希望使用c#中的DFC获取文档内容(将内容读入流)。我使用了以下C#.net代码
IDfId id = collection.getId("r_object_id");
IDfDocument doc = (IDfDocument) session.getObject(id);但它会抛出随后的异常。
异常:无法将'System.__ComObject‘类型的COM对象转换为接口类型'DFCLib.IDfDocument’。此操作失败,因为对IID‘{EFAC2D68-175 B-11D2-9927-006097C27C31}’的接口的COM组件的QueryInterface调用失败:不支持此类接口( HRESULT: 0x80004002 (E_NOINTERFACE)例外)。
我还尝试了以下方法(成功运行),但我不知道如何将内容读取到流或内存流中。
IDfId id = collection.getId("r_object_id");
IDfSysObject sysObject = (IDfSysObject) session.getObject(id);发布于 2012-09-18 14:43:06
这将将文件转储到本地文件系统路径:
IDfId id = collection.getId("r_object_id");
IDfSysObject sysObject = (IDfSysObject) session.getObject(id);
sysObject.getFile(<path>)然后可以使用标准的.Net IO库以流的形式打开文件,例如:
var stream = new System.IO.StreamReader(<path>)我相信DFC有一些基于流的公共方法(getContent?)但我还没有看到.Net成功地使用过它们。但是,我建议您看看DFS () API,而不是DFC。这是现在支持的API,DFC被废弃为一个公共API。DFS在处理存储库内容时确实有流选项。
如果这个答案不足以满足您的需要,您可能还需要检查http://developer.emc.com。
发布于 2012-09-20 09:02:57
异常表示它不能将COM对象转换为IDfDocument。
我猜你的目标不是文件。
对于非文档的sysobject来说,有一个内容是很奇怪的,但它仍然是允许的。然后,可以按照另一个答案中的建议用getFile读取内容。
https://stackoverflow.com/questions/12330910
复制相似问题