如何识别文件的原始文件扩展名或mimetype

时间:2015-03-21 17:28:15

标签: c# .net mime-types

有可能将.exe文件重命名为.txt文件以绕过任何文件类型验证。我正在寻找一种方法来通过读取文件的标题来找出实际的文件类型,而不使用像urlmon.dll这样的dll。

MimeMapping.GetMimeMapping没有解决问题,只是根据扩展名提取mime类型。

是否有一个字典说明哪些字节组合至少代表了非常常见的文件类型,如txt,doc,docx,pdf,xls或xlsx,exe等?

2 个答案:

答案 0 :(得分:1)

我认为你回答了自己的问题。

这有点像泡菜。 读取文件头签名,看它是否与其扩展名匹配。使用FileStream或类似的。

将此与Tommy DDD的答案相结合,我认为你已经确定了。

答案 1 :(得分:0)

这不是最优雅的解决方案,但请查看此答案。 How can I determine if a file is binary or text in c#?您可以通过psudo检查文件是二进制还是文本。

在评论中有人检查连续4个零字节。 \ 0 \ 0 \ 0 \ 0这往往表示二进制文件,因为我们不经常输入NULL字符。