文件Mime类型检查

时间:2012-09-02 05:44:26

标签: c# asp.net-mvc file-upload mime-types

我允许将文件上传到我的C#MVC网站,我现在基于扩展限制这些类型,但我也觉得我需要进行服务器端检查以确认它们还没有重命名。

是否有一种技术可用于检查我需要的所有类型或我可以使用的库,这对我们有帮助?

我看到人们检查文件的前几个字节,但我很害怕我会错过什么?

感谢您的帮助。

编辑:

有很多建议here。我将调查其中一些作为解决方案。

5 个答案:

答案 0 :(得分:2)

如果您将文件作为HttpPostedFile读取,则可以获得等于mime类型的内容类型。

那么你可以做到以下几点:

if (myFile.ContentType == "video/mpeg")
{
   // Do your thing
}
else{
   // error
}

答案 1 :(得分:0)

答案 2 :(得分:0)

我最终混合了here的一些解决方案,因为我没有使用HttpFileBase并且只有文件流,我必须读取流的前几个字节来确定mime类型。

注意:我不使用注册表技术,因为我不知道服务器上会安装什么或不安装什么。

答案 3 :(得分:0)

您可以通过以下方式获取MIME类型:

var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');

                mimeType = file.ContentType;

一旦获得MIME类型,就可以与字符串比较(如@ ffffff01所示)进行比较

答案 4 :(得分:0)

为了更加安全,您还可以同时使用ffffff01所述的带有 ContentType 属性的mimeType和带有 Path.GetExtension 方法的文件扩展名。