java - 动态识别base64编码的文件类型
问题描述
我正在使用 java 8 base64 编码和解码库,同时我成功地编码了 jpg/pdf/png 文件并能够再次将该 base64 字符串保存到 jpg/pdf/png。但我的要求是动态检测文件类型,然后以各自的方式将该字符串保存到图像文件中。例如,如果我得到一个 base64 pdf 文件,那么我的应用程序会自动检测到该字符串是 Base64 pdf 字符串,并将该字符串保存为 pdf。
解决方案
大多数众所周知的文件类型在文件的开头都有“幻数”。这些字节可以识别文件的类型,而无需知道文件扩展名。例如:
- 所有 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 字符串后,您可以检查第一个字节以查看它们是否与这些常量匹配,并适当地处理它们。
推荐阅读
- ruby-on-rails - 没有这样的目录 ruby.exec Errno:ENONT
- symfony - 保留 SVG 图像链接 TCPDF/FPDI 和 Ghostscript
- html - 边缘附有一些列的网格
- python - VSCode:Python,意外参数警报
- sql - DataGridView 无法使用临时表检索存储过程
- python - Python Selenium - 在列表中查找项目
- css - 更改图标的大小
- html - VBA HTML 选择下拉选项
- javascript - 如何将背景和边框作为 svg 图像添加到 rect 元素
- slurm - SLURM 无法连接到本地机器上的控制器