【发布时间】:2011-10-24 14:37:15
【问题描述】:
在我的应用程序中,我收到了 base64string 格式的不同文件。 收到这些 base64Strings 后,我的应用程序需要转换它们 成他们的原始格式。 这些文件可以是 pdf、txt、jpeg 图像、bmp 图像、gif 图像或 png 图像格式。 我怎么知道这个文件是什么格式以便将它们转换成他们的 各自的格式。 base64string 有什么方法可以提供此信息。 任何帮助将不胜感激。'
【问题讨论】:
在我的应用程序中,我收到了 base64string 格式的不同文件。 收到这些 base64Strings 后,我的应用程序需要转换它们 成他们的原始格式。 这些文件可以是 pdf、txt、jpeg 图像、bmp 图像、gif 图像或 png 图像格式。 我怎么知道这个文件是什么格式以便将它们转换成他们的 各自的格式。 base64string 有什么方法可以提供此信息。 任何帮助将不胜感激。'
【问题讨论】:
获取文件类型的唯一可靠方法是通过与文件关联的元数据。如果这在您的情况下不可用,解决方法是读取文件的前几个字节。许多常见格式要求该格式的文件以字节序列开头,称为“幻数”。
Wikipedia article 提供 PDF、JPG、PNG 和 GIF 格式的 maic 数字。 BMP 文件通常以常量 0x42 0x4D (*) 开头。由于文本文件仅包含内容,因此它需要成为默认选项(即,如果前几个字节未被识别为已知幻数,则假定它是文本文件。)
Base-64 编码只是文件的二进制表示。转换回字节序列并评估前几个字节应该足以表明文件属于某种类型。请注意,这是一个不完美的解决方法;例如,碰巧以幻数开头的文本文件(例如“BM”)可能会被错误归类为另一种类型的文件。
【讨论】:
我认为您只需将其从base64string 转换为二进制格式并保存在磁盘上。您只需要获取正确的文件扩展名或完整的文件名,以便用户可以使用相关程序打开它。
【讨论】:
base64 数据只包含文件数据本身,没有关于它的元数据(包括文件名/扩展名)。您可能会尝试解析解码后的 base64 数据的前几个字节以尝试找出文件类型,但更简单的方法是让服务将此信息添加到某些 HTTP 标头中(例如Content-Disposition)。
【讨论】: