如何将TMemoryStream中存储的MHT(HTML+图片)数据复制到TWebBrowser?
直接在内存中加载MHT数据到WebBrowser(无需存盘)
这问题我之前也碰到过!存盘再加载确实有点冗余,其实完全可以直接在内存里把MHT数据喂给WebBrowser,不用绕磁盘这一圈,效率还更高。
针对Delphi的解决方案
看你的代码风格应该是用Delphi开发的,直接用TWebBrowser的DocumentStream属性就能搞定,步骤很简单:
- 确保你的
MemoryStream指针回到起始位置(不然会从中间开始读数据) - 直接把流赋值给WebBrowser的
DocumentStream
完整代码示例:
// 假设MS是已经填充好MHT数据的TMemoryStream MS.Position := 0; // 重置流指针到开头 WebBrowser1.Navigate('about:blank'); // 先初始化空白文档(可选,但能避免控件未就绪的问题) // 等待空白文档加载完成(可以通过OnDocumentComplete事件处理,或者简单等待) while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do begin Application.ProcessMessages; end; // 直接加载内存流中的MHT数据 WebBrowser1.DocumentStream := MS;
补充说明
- 如果你的MHT数据格式正确,这样加载出来的效果和从磁盘打开完全一致
- 跳过存盘步骤不仅能提升速度,还能避免临时文件管理的麻烦(比如删不掉临时文件的问题)
内容的提问来源于stack exchange,提问作者Reron
相关产品推荐
相关产品推荐

