1. C# / Говнокод #17405

    +135

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    private static string GetMultipartFileContentType(string file)
    {
        var ext = file.Split('.').Last().ToLower();
    
        var types = new[]
        {
            new[] {"application/envoy","evy"},
            new[] {"application/fractals","fif"},
            new[] {"application/futuresplash","spl"},
            new[] {"application/hta","hta"},
            new[] {"application/internet-property-stream","acx"},
            new[] {"application/mac-binhex40","hqx"},
            new[] {"application/msword","doc"},
            new[] {"application/msword","dot"},
            new[] {"application/octet-stream","*"},
            new[] {"application/octet-stream","bin"},
            new[] {"application/octet-stream","class"},
            new[] {"application/octet-stream","dms"},
            new[] {"application/octet-stream","exe"},
            new[] {"application/octet-stream","lha"},
            new[] {"application/octet-stream","lzh"},
            new[] {"application/oda","oda"},
            // Многобукв...
            new[] {"x-world/x-vrml","xof"}
        };
    
        var toReturn = types.FirstOrDefault(t => t[1] == ext);
    
        return toReturn != null ? toReturn[0] : "application/octet-stream";
    }

    Запостил: pushistayapodmyshka, 05 Января 2015

    Комментарии (13) RSS

    • Автор не умеет в Dictionary?
      Ответить
      • Вот прямо так чтобы в НЕТ да и не было какой-нибудь библиотеки, в которой эти заголовки уже перечислены? Ну и если по-честному делать, тогда нужно не словарь, а в отдельный файл эти заголовки, они же не навечно (хотя future splash похоже, что навечно...)
        Ответить
        • Где-то точно есть. И, помнится, наши backend-guys как-то изъёбывались, вытаскивая это всё в юзабельный вид. В 2.0.
          Ответить
        • я в далеком прошлом из реестра вытягивал:

          HKEY_CLASSES_ROOT/.<ext>/ContentType

          для большинства типов там что-то стоит еще со времен IE3.
          Ответить
          • А из раздела HKEY_CLASSES_ROOT\MIME\Database\Content Type можно добыть таблицу обратного преобразования.
            Ответить
            • к слову. а что какого штатного интерфейса нету?

              в старые времена это было как раз проблемой что в некоторых случаях IE на content-type просто забивал, и в лоб по расширению пытался файлы интерпретировать. (это же была их коронная фишка: прямо со странички запускать кликнутый экзешник.) если был интерфейс для этого в прошлом - я сомневаюсь что некрософт его убрал.
              Ответить
          • Непереносимо.
            Ответить
            • Несмешная шутка.

              Уйди со сцены, дебил.
              Ответить
    • var ext = file.Split('.').Last().ToLower(); // тоже говно
      Ответить
    • Всё есть говно
      Ответить

    Добавить комментарий