4000 грн на місяць

SQL Server - как "залить" изображения?

  • Автор теми Автор теми kost
  • Дата створення Дата створення
Статус: Офлайн
Реєстрація: 25.02.2006
Повідом.: 45
SQL Server - как "залить" изображения?

Огромное спасибо тому, кто откроет секрет загрузки изображений в базу данных. SQL Server на хостинге, подключение к нему по ftp через VisualStudio 2008. Как залить в базу картинки в одно из полей таблицы? Если можно - подробнее, нам "чайникам" нелегко. Заранее спасибо.
 
Сам изучать начинаю -)
есть BLOB поля, можно хранить ссылки на фотки, хранящиеся отдельно
а вообще - Посилання видалено Это если MS SQL
 
Выбираешь тип поля image. Вотнебольшой кусочек из моего старого кода
Код:
   public static int SaveBinaryPhoto(int BodyGuardID, byte[] imgbin, string imgcontenttype)
        {
      


            SqlCommand command =
                new SqlCommand(
                    "INSERT INTO Photo (BodyguardID,Photo,CreatedDate) VALUES ( *bid, *img_data,CURRENT_TIMESTAMP )");
            command.Parameters.AddWithValue("bid", BodyGuardID);
            SqlParameter par = new SqlParameter("img_data", SqlDbType.Image);
            par.Value = imgbin;
            command.Parameters.Add(par);


            return database.ExecNonQuery(command);
        }



// выводить можно через датароу
                    DataRow dr = ......;
                    Response.ContentType = "image/jpeg";
                    Response.BinaryWrite((byte[])dr["photo"]);

Но вообще, предпочитаю в базе хранить имя\адрес картинки, а саму картинку хранить в файле. Быстрее будет работать ;)
 
Даааа, чайникам действително приходится нелегко. Потому как советчики невнимательно читают топик :)
SQL Server на хостинге, подключение к нему по ftp через VisualStudio 2008.
Хотя я чет не понимаю что это за подключение. Но явно в нем не должны выполняться СКуЛь-запросы. :)
Начинаем думать по новой ;)
 
Да... BFG-9000... я тоже хотел по-быстрому что-то насчет BLOB сказать.... а тут вот оно как....
 
Думаю имелось ввиде не подключение к SQL серверу (это вообще как?) а доступ к файловой системе
Залили изображения по ftp, потом ПО затянуло их в БД
 
Если это сложно, или я неправильно объяснил - подскажите, как реализовать на ASP.NET отображение на странице товаров с картинками и кратким описанием. Желательно с возможностью в дальнейшем реализации онлайн-заказа товаров.
 
на сайте майкрософт есть примеры, в том числе и такого
я так изучаю -)
 
Скачай BeerHouse \ книгу Дино Эспозито, будет легче :)
 
Если это сложно, или я неправильно объяснил - подскажите, как реализовать на ASP.NET отображение на странице товаров с картинками и кратким описанием. Желательно с возможностью в дальнейшем реализации онлайн-заказа товаров.
Да примерно так же как и например на ПХП :) База+обработчик запросов выгребающий из базы данные+шаблоны, через которые формируются фронтендовые странички.

Кстати в данном случае становится спорной полезность хранения картинок в БЛОБах. Излишняя нагрузка на БД-сервер и на хостинговую машину в целом, в то время как это можно спокойно перепоручить файловой системе и собсно вебсерверу. Тем более что БД может стоять на отдельной машине...
 
это подход My sql и всех юникс систем.

за хранение завирусованного контента на сервере программиста наказывают. Иногда выгоняют.
Я не говорю о процедурах бэкапа.

причем тут подход, если Вы будете вешать сервер выборками картинок из базы Вас по головке не погладят админы, предложат пересесть на обельный :), говорю от того что работал с БД Oracle и представляю скока делается выборка картинок из базы при не большем количестве одновременно подключенных узеров (35), среднем сервере SCSI RAID массив, и неплохом инете 6 мбит.
 
У друга в БД MSSQL картинок на 2 Тб - говорит все нормально бегает :D
 
Если сайт будет деплоится на нескольких серверах (веб-ферма) то рисунки однозначно должны храниться в базе. Иначе - это лишний геморрой, а в базе лучше хранить путь к картинке на сервере.
 
если сайт будет на нескольких серверах, то целесообразно картинки\и прочую херню выкинуть на сервер для статики, который будет отдавать с помощью Nginx \ lighhttpd всю эту статику.

А в БД хранить пути, URL и обычный. Так например, если не ошибаюсь Picasa делает.
 
Для чайников - картинки хранить не в базе, а складывать на сервере в каталоге. А в базе просто имя файла (путь).
Практически наверняка хранение картинок в БД будет неоправдано.
 
причем тут подход, если Вы будете вешать сервер выборками картинок из базы Вас по головке не погладят админы, предложат пересесть на обельный :), говорю от того что работал с БД Oracle и представляю скока делается выборка картинок из базы при не большем количестве одновременно подключенных узеров (35), среднем сервере SCSI RAID массив, и неплохом инете 6 мбит.

Вы, я надеюсь, в курсе про кеширование, nginix, и то, что не обязательно не хранить в БД, то, что кешируется
 
Вы, я надеюсь, в курсе про кеширование, nginix, и то, что не обязательно не хранить в БД, то, что кешируется
Не надо, пусть хранят. Такие люди стимулируют технический прогресс в области наращивания вычислительных мощностей :D
 
по поводу общего мнения:
>складывать на сервере в каталоге. А в базе просто имя файла (путь).
..если бы не одно очень серьезное НО. складывание картинок в файловой системе и хранение в БД путей на них, показывает неприличное место довольно важному понятию "целостность данных".
Это древний холивар программистов СУБД. Развивать его бессмысленно. Каждый делает свой выбор под конкретно стоящую задачу.
 
в базу картинки сохранить получилось, а вот с их отображением трабл - надо под ASP.NET 2.0 HttpHandler писать свой. В принципе не так сложно, вот с запросами SQL беда и картинки не отображаются. Ввиду срочности буду пока выкручиваться сохранением картинок в отдельном каталоге и пути к нему в базе. Попробовал - получается. С отображением картинок из базы потом может поковыряюсь на досуге. Всем спасибо :)
 
зачем хттп хендлер? для простых случаях хватит обычного StreamBinaryWritera чтобы прямо в поток вывести, конечно это не будет оптимально...но все же..
 
Назад
Зверху Знизу