使用Python提取XML中Base64编码Zip格式Blob生成文件无法打开解决方案
问题原因
- 核心错误是base64的编码/解码逻辑用反了:XML中Blob字段存储的内容是zip二进制文件经过base64编码后得到的文本字符串,你现有代码是将这段base64文本又做了一次base64编码,写入文件的内容并非原始的zip二进制数据,因此无法被识别为合法的压缩包。
- 你调用的
base64.b64encode作用是将原始二进制数据转换为base64编码格式,而你需要的是反向操作:把base64格式的文本还原为原始二进制数据,应该使用base64.b64decode方法。
修复方案
直接使用如下代码即可提取出可正常打开的zip文件:
import base64 # my_blob为你从XML Blob节点提取到的文本内容,无需额外处理换行,base64解码会自动忽略空白字符 with open("Protocols.zip", "wb") as f_zip: f_zip.write(base64.b64decode(my_blob))
验证说明
你提供的样本Blob内容经过上述方法解码后,压缩包内包含名为710738.doc的Word文档,可正常读取打开。
内容的提问来源于stack exchange,提问作者Krank
相关产品推荐
相关产品推荐

