2010-04-15 5 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# ... MimeType

+0

Почему бы вам не указать тип файла по расширению имени файла? – Gumbo

+0

@Gumbo, который звучит очень хорошо, я сделал это раньше. Хорошо, я попробую его. –

+0

Проверка типа файла не рекомендуется, если у вас нет правильной проверки файлов. Например, если кто-то загружает exe с расширением .doc, а затем вы разбираете его. Вам понадобится проверка ошибок (аналогично проверке MIMEtype – RvdK

ответ

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 
} 

более читаемый, чем Regex, потому что регулярное выражение будет болью в заднице, пытаясь сделать выражение для дюжины типов пантомимы

+0

почему мой принимается в качестве ответа? Axarydax сделал ответ, я только предоставил некоторый код, чтобы объяснить свой комментарий к его ответу. – RvdK

+0

, потому что пользователь-автоответчик всегда получает галочку. – Leo

6

DOC является:

  • применение/MSWord [официальный]
  • приложение/документ
  • заявл/текст
  • применение/vnd.msword
  • применение/vnd.msword
  • применение/WinWord
  • применение/слово
  • применение/х-msw6
  • применение/х-MSWord

счастливым regex'ing

Edit: Согласно @Dan Diplo, вы должны аль поэтому проверьте наличие .docx's MIMEtypes

+0

также fo docx - application/vnd.openxmlformats-officedocument.wordprocessingml.document –

+3

Все типы mime Word 2007 можно найти по адресу http://technet.microsoft.com/en -us/library/ee309278.aspx Они довольно полны! –

+0

@Axarydax, как дать для текстового файла вместо '' image/\\ S + "' –

0

Посмотрите на regexblid Библиотека с регулярным выражением.

Также хорошо знать, regexbuddy может использоваться для проверки и проверки регулярных выражений.

+0

Бит бесполезно публиковать regexblid, когда есть нет regex для документов на этом сайте. – RvdK

1

, если известны типы содержимого (см. Ответ Axarydax), почему вы хотите использовать регулярное выражение?

0

Gumbo прав, возможно, будет проще проверить расширение файла.

Path.GetExtension(file.FileName) 
Смежные вопросы