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

    +118

    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
    SqlCommand command = new SqlCommand ();
    command.Connection = connection;
    command.CommandText = "select data from filestorage where id=@id;";            
    command.Parameters.AddWithValue ("@id", fileId);
    command.CommandType = CommandType.Text;
    
    byte [] data = (byte []) command.ExecuteScalar ();
    
    System.IO.Stream outStream = Response.OutputStream;
    
    Response.ContentType = "Application/octet-stream";
    Response.AppendHeader ("Connection", "keep-alive");
    
    Response.AppendHeader ("Content-Disposition", " attachment; filename = \"" + fName+"\"" );
    
    outStream.Write (data, 0, data.Length);
    Response.End ();

    продолжение http://govnokod.ru/4227

    Запостил: akai_mirror, 12 Сентября 2010

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

    • В чем конкретно говнокод? В приведении типов? В хранении данных в таблице и выборке по id без какой-либо проверки? В самом языке C#?
      Ответить
      • Последнее. Точно. Готовьтесь: скоро весь код на шарпе будет здесь. А потом других языков, которые кому-то не нравятся. И всё: это коллектор кусков.
        Ответить
        • C# прекрасный язык. А код говно
          Ответить
          • Я не спорю, что шарп прекрасен. Видимо, мой сарказм был как всегда не очевиден.
            Ответить
            • все совершенно, пока нет превосходящего совершенства. А как было в каждом святом 3кг говна, так и остается, и периодически увеличивается
              Ответить
              • Ну, не совершенен, я этого не говорил)) Есть мнение про несколько языков, что они абсолютное говно, но шарп в них точно не входит.
                Ответить
                • причем в свое время и эти языки не считались говном )
                  Ответить
                  • Когда-нить и c/c++ абсолютным говном станет, но наверно это уже не моё поколение будет, и я рад))
                    Ответить
      • Как минимум в отсутствии вызова Dispose для команды.
        Ответить
      • говнокод в том, что данные из бд (а там есть записи >100MB) сначала целиком читаются в память, и только потом отдаются клиенту. сервер уходит в глубокий своп при уже десятках запросов.
        Ответить
        • непонимание автором концепции стримов

          видимо пхппист
          Ответить
        • То есть вы предлагаете читать кусочками через GetBytes, собирая файл, так? А где указано, что у вас именно столь большие данные?
          Ответить
          • зачем. вообще не надо нигде запоминать\собирать
            Ответить
            • Расскажите, как отдать данные, хранящиеся в базе, не делая этого :)
              Ответить
      • В каше из SQL и HTTP в одном классе.
        В зашитом имени SQL клиента.
        В кешировании файла ввиде массива байт (хотя можно ведь было стримом связать)
        Ответить

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