Chrome导出的MHT格式Blink归档图片转Base64报错如何解决?
问题修复方案
核心原因
你误用了解码方式:MHT中该图片的Content-Transfer-Encoding是binary,说明内容是原始字节流,而非Base64编码字符串,直接用System.Convert.FromBase64String解码必然报错。
修复步骤
- 停止Base64解码操作:binary编码的内容不需要经过Base64转换,直接提取原始字节即可。
- 正确提取MHT中的图片字节:
- 不要将binary内容当作字符串读取(不可打印字节会被字符串处理逻辑损坏),需以字节流方式解析MHT,定位到对应图片的Content块,提取其原始字节数据。
- 代码修正示例:
假设你已正确提取到图片的原始字节数组(而非转成字符串的内容),直接写入文件即可:// 假设bytes是从MHT中提取的binary编码图片原始字节 byte[] bytes = ...; File.WriteAllBytes("image.jpg", bytes);
补充说明
如果手动提取MHT内容时误将二进制转成了字符串,会导致数据损坏。建议使用专门的MHT解析类(比如MhtDocument相关实现)自动解析各部分内容,避免手动处理字节与字符串转换的问题。
内容的提问来源于stack exchange,提问作者xralf
相关产品推荐
相关产品推荐

