上传文件
  1. base64hub
  2. 文件工具
  3. ZIP 转 Base64

ZIP 转 Base64

拖入一个 .zip,复制为一个 Base64 字符串。先把文本文件压缩再编码,结果往往比逐个编码文件短很多倍。

免费 无需注册,不限次数 本地 不上传任何内容 更新于 2026年10月27日
将文件拖到这里、粘贴或选择文件
输入 –输出 –大小 –

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何把 ZIP 转换为 Base64

  1. 把 .zip 文件拖到框里,或者用文件选择器选择它。
  2. 输出为 默认是 纯 Base64。如果需要同时附带文件名、类型和大小,请用 JSON;需要下载链接则用 HTML <a download>。
  3. 除非字符串要放进 MIME 邮件正文,否则不要勾选 每 76 字符换行。
  4. 点击 复制输出;较大的压缩包用 另存为 .txt。

先压缩,再编码

Base64 会让你给它的任何内容增大约三分之一。压缩则能在此之前把文本、JSON、CSV、HTML 和日志变小,所以顺序很重要。用一个 219,398 字节的 JSON 文件、一个 HTML 页面和一个样式表做的小测试:

方式需要发送的字符数
仅对 JSON 文件做 Base64 编码292,532
三个文件一起压缩(19,149 字节),再做 Base6425,532

图片、视频、MP3 和现有的压缩包已经压缩过,几乎不会再变小;但把它们打包进一个 ZIP,仍然能把许多文件变成一个字段。对于单个文本载荷,gzip 是更轻量的选择;见 Gzip 和 Base64。

Base64 ZIP 用在哪里

  • 部署和自动化 API:一些运行代码或托管网站的服务,接受 JSON 请求中以 Base64 编码的 ZIP 形式提供的整个包。
  • CI 和密钥存储:一个存放证书或配置文件的文件夹可以压缩后存为一个 Base64 密钥,再在流水线中用 base64 -d 还原。
  • 批量导出和附件:一组报表或发票在一个请求中发出,而不是每个文件占一个字段。

在代码中构建 ZIP

Python 可以在内存中创建压缩包并编码,无需写临时文件:

import base64, io, zipfile
from pathlib import Path

buf = io.BytesIO()
with zipfile.ZipFile(buf, "w", zipfile.ZIP_DEFLATED) as z:
    for path in Path("site").rglob("*"):
        if path.is_file():
            z.write(path, path.relative_to("site"))

package = base64.b64encode(buf.getvalue()).decode("ascii")

ZIP_DEFLATED 很关键:默认的 ZIP_STORED 完全不压缩。流式处理和换行符的更多内容见 Python 中的 Base64。

检查 Base64 ZIP

Base64 开头含义
UEsDBBQA第一个条目需要 2.0 版本才能解压的 ZIP,压缩条目通常如此
UEsDBAoA第一个条目只需要 1.0 版本,有些工具对未压缩的条目会这样写
UEsFBg空压缩包,里面什么都没有

如果字符串以 UEsFBg 开头,说明压缩包创建时没有任何文件,这常常是构建脚本中路径写错导致的。Base64 转 ZIP 会解码字符串并列出其中的文件,这是确认压缩包内容是否符合预期的最快办法。

常见问题

为什么 DOCX、XLSX 和 JAR 文件也以 UEsDB 开头?

它们都是内部结构固定的 ZIP 压缩包。UEsDB 是 PK\x03\x04 的 Base64,这是每个非空 ZIP 开头的本地文件头,无论扩展名是什么。

Base64 编码会让 ZIP 进一步压缩吗?

不会。Base64 会让任何输入增大约 33%,而 ZIP 本来就是压缩过的。收益来自先压缩:可压缩的文件在加上 Base64 开销之前就已经变小了。

能编码有密码保护的 ZIP 吗?

能。加密的压缩包和其他文件一样编码。接收方仍然需要密码才能解压。