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
同样值得一提的是,它可以用于验证和测试正则表达式。如果内容类型已知(请参见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)