C# 检查文件内容类型的正则表达式是否为.doc?

C# 检查文件内容类型的正则表达式是否为.doc?,c#,regex,C#,Regex,当我使用文件上载时,我使用正则表达式检查文件内容类型。。。前 private bool IsImage(HttpPostedFile file) { if (file != null && Regex.IsMatch(file.ContentType, "image/\\S+") && file.ContentLength > 0) { return true;

当我使用文件上载时,我使用正则表达式检查文件内容类型。。。前

private bool IsImage(HttpPostedFile file)
    {
        if (file != null && Regex.IsMatch(file.ContentType, "image/\\S+") &&
          file.ContentLength > 0)
        {
            return true;
        }
        return false;
    }
这将返回我的文件是否为图像。。。如何检查它是否是word(.doc/.docx)文档或不使用c#…

文档的mimetype是:

  • 应用程序/msword[官方]
  • 申请/文件
  • 应用程序/文本
  • 应用程序/vnd.msword
  • 应用程序/vnd.ms-word
  • 应用程序/winword
  • 应用程序/单词
  • 应用程序/x-msw6
  • 应用程序/x-msword
快乐雷格斯汀酒店

编辑:根据@Dan Diplo的说法,您还应该检查.docx的MIMEtypes

看看带有正则表达式的库


同样值得一提的是,它可以用于验证和测试正则表达式。

如果内容类型已知(请参见Axarydax答案),为什么要使用正则表达式?

例如,使用Axarydax答案:(因此无需docx mime检查)

List wordMimeTypes=new List();
添加(“应用程序/msword”);
wordMimeTypes.Add(“应用程序/文档”);
添加(“appl/text”);
添加(“application/vnd.msword”);
wordMimeTypes.Add(“application/vnd.ms word”);
添加(“应用程序/winword”);
添加(“应用程序/word”);
添加(“应用程序/x-msw6”);
添加(“应用程序/x-msword”);
//等等…等等。。。
if(wordMimeTypes.Contains(file.ContentType))
{
//word文档
}
其他的
{
//不是word文档
}

比正则表达式更具可读性因为当试图为十几种mime类型创建表达式时,正则表达式将成为一个麻烦,Gumbo是正确的,检查文件扩展名可能更容易

Path.GetExtension(file.FileName)

另外fo docx-application/vnd.openxmlformats-officedocument.wordprocessingml.document所有Word 2007 mime类型都可以在网站上找到,它们非常丰富@Axarydax如何为word文件而不是
“image/\\S+”
提供更多选项。为什么不在其中包含这些mimetype的向量,然后检查该列表中是否存在该文件的mimetype?当该站点上没有文档的regex时,发布regexblid是毫无用处的。为什么不通过文件扩展名来识别文件类型?@Gumbo听起来很好,我以前做过。。好的,我试试..如果没有正确的文件检查,不建议进行文件类型检查。例如,如果有人上传一个扩展名为.doc的exe,然后你解析它。您需要进行错误检查(与MIMEtype checking相同为什么我的答案被接受?Axarydax给出了答案,我只提供了一些代码来解释我对他的答案的评论。因为可复制粘贴的anwser总是得到复选标记。
Path.GetExtension(file.FileName)