保存不同的文件格式

时间:2011-08-11 02:19:16

标签: c# wcf

在我的应用程序中,我在base64string中收到不同的文件。 收到那些base64Strings后,我的应用程序需要转换它们 进入原始格式。 这些文件可以是pdf,txt,jpeg图像,bmp图像,gif图像或png图像格式。 我怎么知道这个文件的格式是什么,以便将它们转换为它们 各自的格式。有没有什么方法base64string提供此信息。 任何帮助将不胜感激。'

3 个答案:

答案 0 :(得分:1)

base64数据仅包含文件数据本身,没有关于它的元数据(包括文件名/扩展名)。您可能会尝试解析解码的base64数据的前几个字节以尝试找出文件类型,但更简单的方法是让服务在某些HTTP头中添加此信息(例如Content-Disposition

答案 1 :(得分:1)

我认为您只需要将其从base64string转换为二进制格式并保存在磁盘上。您只需要获取正确的文件扩展名或完整的文件名,以便用户可以使用相关的程序打开它。

答案 2 :(得分:0)

获取文件类型的唯一可靠方法是通过与文件关联的元数据。如果在您的情况下不可用,则解决方法是读取文件的前几个字节。许多常见格式要求该格式的文件以字节序列开头,称为“幻数”。

Wikipedia article提供PDF,JPG,PNG和GIF格式的maic数字。 BMP文件通常以常量0x42 0x4D(*)开头。由于文本文件仅包含内容,因此它必须是默认选项(即,如果前几个字节未被识别为已知幻数,则假设它是文本文件。)

Base-64编码只是文件的二进制表示。转换回字节序列并评估前几个字节应足以表明文件属于某种类型。请注意,这是一个不完美的解决方法;例如,恰好以幻数开头的文本文件(例如“BM”)可能被误分类为另一种类型的文件。