首页 > 解决方案 > 动态识别base64编码的文件类型

问题描述

我正在使用 java 8 base64 编码和解码库,同时我成功地编码了 jpg/pdf/png 文件并能够再次将该 base64 字符串保存到 jpg/pdf/png。但我的要求是动态检测文件类型,然后以各自的方式将该字符串保存到图像文件中。例如,如果我得到一个 base64 pdf 文件,那么我的应用程序会自动检测到该字符串是 Base64 pdf 字符串,并将该字符串保存为 pdf。

标签: javabase64

解决方案


大多数众所周知的文件类型在文件的开头都有“幻数”。这些字节可以识别文件的类型,而无需知道文件扩展名。例如:

  • 所有 JPEG 都以:FF D8 FF DB 开头
  • 所有 PDF 都以:25 50 44 46 2d 开头
  • 所有 PNG 都以:89 50 4E 47 0D 0A 1A 0A 开头

这些可在以下网址找到:https ://en.wikipedia.org/wiki/List_of_file_signatures ,但如果此列表不包含您需要的格式的值,您可以查找该格式的已发布规范。

解码 base64 字符串后,您可以检查第一个字节以查看它们是否与这些常量匹配,并适当地处理它们。


推荐阅读