2010-04-15 104 views
4

当我使用一个文件上传我用它来检查文件的contentType使用正则表达式...对于前正则表达式来检查文件内容类型是.doc还是不是?

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

这将返回我的文件是一个图像或不...如何检查它是一个字(。 DOC/.DOCX)文件或不使用C#...

+0

为什么不通过文件扩展名来识别文件类型? – Gumbo 2010-04-15 10:42:16

+0

@Gumbo听起来真的很好,我以前做过它..好吧,我会尝试一下.. – 2010-04-15 10:47:59

+0

当你没有正确的文件检查时,不建议filetype检查。例如,如果有人上传了一个exe文件,扩展名为.doc,然后解析它。您将需要错误检查(与MIME类型检查相同 – RvdK 2010-04-15 11:48:07

回答

3

例如使用Axarydax答案:(所以没有DOCX哑剧检查)

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 
} 

比正则表达式更易读,因为想做一个表达式MIME类型

十几当正则表达式将成为一个痛苦的屁股
+0

为什么我的答案被接受?Axarydax提供了答案,我只提供了一些代码来解释我对他的回答的评论。 – RvdK 2010-04-15 12:02:18

+0

,因为可复制粘贴的anwser总是获得复选标记。 – Leo 2010-04-16 21:21:53

6

DOC的MIME类型是:

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

快乐regex'ing

编辑:据@丹DIPLO,你应该人因此请检查.docx的MIMEtypes

+0

也适用于docx - application/vnd.openxmlformats-officedocument.wordprocessingml.document – 2010-04-15 10:26:20

+3

所有Word 2007 MIME类型可以在http://technet.microsoft.com/zh-cn/找到。 -us/library/ee309278.aspx他们是相当口的! – 2010-04-15 10:28:30

+0

@Axarydax如果给出的是word文件而不是'“image/\\ S +”' – 2010-04-15 10:32:45

0

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

也很好理解,regexbuddy可以用来验证和测试正则表达式。

+0

有没有用来发布regexblid时有没有正则表达式在那个网站上的文档 – RvdK 2010-04-15 10:35:40

1

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

0

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

Path.GetExtension(file.FileName) 
相关问题