我有一個C++應用程序需要支持二進制數據庫內容(圖像等)。當使用MS Access或MS SQL Server時,這些數據被包裝在一個OLE對象中。我如何去掉這個OLE頭信息?請注意,我不能只查找特定標籤的開頭,因爲內容可以是png,jpg和其他格式的整個堆。我應該使用類似COleDataObject的東西嗎?剝離OLE頭信息(MS Access/SQL Server)
回答
使用MS Access 2007年(我需要測試其他MS數據庫)的格式似乎是:
84 bytes
file name + \0
full path + \0
5 bytes + [2] bytes (the third byte of those five bytes)
temp path + \0
4 bytes
actual data (if not using a link to the file)
到目前爲止,我簡單地分析和實際數據之前剝去一部分,但我仍然不知道如果沒有辦法使用像COleDataSource這樣的東西來幫助更強大地解析這些信息。
另請注意,此格式僅適用於通用內容(開始標記0x15 0x1c 0x32)。當使用位圖(開始標記0x15 0x1c 0x2f)時,有78個字節的固定偏移量,當使用PowerPoint(開始標記0x15 0x1c 0x34)時,固定偏移量爲95個字節。
不是理想的解決方案,但我找不到更好的答案。 – 2010-05-25 13:37:01
我們確定OLE包裝總是一樣嗎? – 2010-05-25 17:48:05
對於MS Access 2007,我測試了很多種文件類型(gif,bmp,jpg,tiff,png,avi。mpg,swf,...)和格式'holds'。不幸的是,我不能輕鬆訪問其他MS數據庫系統,所以我還沒有能夠驗證它們。 – 2010-05-26 07:51:43
請參閱Stephen Lebans OleToDisk的代碼。請注意,該代碼位於VBA中。此外,我不知道這將在SQL Server中的工作。
我重新張貼作爲一個答案我的評論:
不要使用OLE領域,只要使用正規的BLOB。
我會,如果我可以:-) 不幸的是,我不能控制這部分問題(其他人/軟件寫入數據庫,我只需要閱讀它)。 – 2010-05-24 16:40:45
- 1. 從FileInputStream或FileReader中剝離HTTP標頭信息
- 2. Sharepoint剝離HTTP頭
- 3. 剝離Windows DLL調試信息?
- 4. 運送產品前剝離最大量的信息
- 5. Elastic Beanstalk剝離Sec-WebSocket-Accept報頭
- 6. 剝離SQL Server中的字符串
- 7. 最後剝離「\」
- 8. 剝離在Oracle
- 9. TinyMCE剝離HTML
- 10. XmlNodes剝離HTML
- 11. 剝離的#define
- 12. Axis2 SOAP信封頭信息
- 13. MS域存儲信息
- 14. 剝離空白PHP
- 15. 剝離高/低ascii
- 16. render_to_string剝離標記
- 17. 剝離span標籤
- 18. 剝離字符串
- 19. 當把信息從DIV放到TEXTAREA中時,IE7剝離換行符
- 20. 如何阻止Joomla從聯繫人信息中剝離HTML代碼?
- 21. 使用Html Agility Pack剝離MS Word標籤
- 22. 分離x和y信息
- 23. 距離度量的信息
- 24. 檢索LDAP信息離線
- 25. 剝頭響應 - Python的
- 26. DataTables導出選項:從表頭剝離html
- 27. nginx剝離自定義請求標頭嗎?
- 28. Roku SDK 2.0視頻節點頭正在被剝離
- 29. 是否有一個可以剝離HTTP響應頭的函數?
- 30. voip基礎 - 包頭信息?
不要使用OLE字段,只需使用常規的BLOB。 – 2010-05-20 23:36:44