文件 Base64 转换
把本地文件读取成 Base64 或 Data URL,也可以把 Base64 文本还原成文件下载,全部在浏览器本地完成,不上传。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
文件只在本地读取,不会上传到任何服务器。
还没有选择文件,选择一个文件后会在浏览器本地读取,不会上传。
这个工具能做什么
- 把图片、字体、PDF 之类的小文件转成 Base64 或 Data URL,直接内联进 CSS、HTML 或 JSON,省掉一次额外请求。
- 把接口返回的 Base64 字段还原成文件下载下来,确认里面是图片还是被截断的乱码。
- 调试邮件源码、日志或抓包结果里的 `data:image/png;base64,...`,看看原文件是什么类型、多大。
- 需要在文档或工单里贴一个自包含的小图标时,用 Data URL 比附带文件更方便。
示例
输入
Hello, UniKit!
输出
SGVsbG8sIFVuaUtpdCE=
这是把这段文本按 UTF-8 读成字节后再做标准 Base64 的结果。文件模式下先选文件、再复制输出,字节来源换成文件内容,算法完全相同。
常见问题
大文件能转吗?会不会崩?
能转,但 Base64 会把体积撑大约三分之一,超过 2 MB 的文件还会在内存里多存一份字符串,页面会给出「文件较大」的提示。几百 KB 的图标和字体没问题,几十 MB 的视频建议不要走 Data URL,直接引用文件更合适。
Data URL 和纯 Base64 有什么区别?
Data URL 在 Base64 前面加了一段元信息:`data:<MIME 类型>;base64,`。浏览器看到它就能直接当成图片或字体用,而纯 Base64 只是一串字符,需要你自己补 MIME。反过来,工具只接受 base64 形式的 Data URL,纯文本 Data URL(`data:text/plain,abc`)会报「只支持 base64 编码的 Data URL」。
反解出来的文件类型是怎么定的?
如果输入是 Data URL,MIME 类型直接从里面读;如果只是裸 Base64,就按你填的下载文件名后缀去猜(`logo.png` → image/png),猜不到就用 application/octet-stream。下载下来的字节内容永远和 Base64 解出来的一致,扩展名只影响系统怎么打开它。
为什么解码后预览区显示「二进制内容,无法按文本预览」?
因为解出来的字节不是合法的 UTF-8 文本(比如 PNG 文件头)。这只是预览的限制,字节本身是完整的,点「下载文件」拿到的内容不会有任何损失。
文件会上传到服务器吗?
不会。文件通过浏览器的 FileReader 在本地读成字节数组,编码、解码和下载都由 Blob 在本地完成,页面不发送任何网络请求,服务器上也留不下任何副本。
关键词:base64filedata url文件转换编码下载encodedecodefile to base64base64 to file