检查文件内容类型的正则表达式是.doc还是不?

时间:2010-04-15 10:21:03

标签: c# regex

当我使用文件上传时,我使用正则表达式检查文件内容类型...对于前

private bool IsImage(HttpPostedFile file)
    {
        if (file != null && Regex.IsMatch(file.ContentType, "image/\\S+") &&
          file.ContentLength > 0)
        {
            return true;
        }
        return false;
    }

这会返回我的文件是否是图片...如何检查它是一个单词(.doc / .docx)文件或不使用c#...

5 个答案:

答案 0 :(得分:6)

DOC的mimetype是:

  • application / msword [官方]
  • 应用/ DOC
  • 申请/文本
  • 应用/ vnd.msword
  • 应用/ vnd.ms字
  • 应用/ WINWORD
  • 应用/字
  • 应用程序/ x-msw6
  • 应用程序/ x-MSWORD

快乐的正则表达

编辑:根据@Dan Diplo,您还应该检查.docx的MIME类型

答案 1 :(得分:3)

例如使用Axarydax回答:(所以没有docx mime检查)

List<String> wordMimeTypes = new List<String>();
wordMimeTypes.Add("application/msword");
wordMimeTypes.Add("application/doc");
wordMimeTypes.Add("appl/text");
wordMimeTypes.Add("application/vnd.msword");
wordMimeTypes.Add("application/vnd.ms-word");
wordMimeTypes.Add("application/winword");
wordMimeTypes.Add("application/word");
wordMimeTypes.Add("application/x-msw6");
wordMimeTypes.Add("application/x-msword");
//etc...etc...

if (wordMimeTypes.Contains(file.ContentType))
{
    //word document
}
else
{
    //not a word document
}

比Regex更具可读性,因为当试图为十几种mime类型创建表达式时,正则表达式会变得很痛苦

答案 2 :(得分:1)

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

答案 3 :(得分:0)

查看regexblid具有正则表达式的库。

另外很高兴知道,regexbuddy可用于验证和测试正则表达式。

答案 4 :(得分:0)

Gumbo是对的,检查文件的扩展名可能更容易。

Path.GetExtension(file.FileName)