none
Как записывать картинку в базу данных и считывать. RRS feed

Ответы

  • Это передача файла на сервер. там Вы найдете что Вам нужно.

    По поводу сохранения картинок в бд - можно, но не желательно (это отражается на роизводительности). Лучше хранить картинки в файловой системе, а в базе хранить путь к ним или просто название картинок.


    • Изменено Higgs.Boson 25 июня 2013 г. 12:35 Исправление
    • Предложено в качестве ответа YatajgaModerator 25 июня 2013 г. 18:22
    • Помечено в качестве ответа Континент 1 июля 2013 г. 11:03
    25 июня 2013 г. 12:35

Все ответы

  • Это передача файла на сервер. там Вы найдете что Вам нужно.

    По поводу сохранения картинок в бд - можно, но не желательно (это отражается на роизводительности). Лучше хранить картинки в файловой системе, а в базе хранить путь к ним или просто название картинок.


    • Изменено Higgs.Boson 25 июня 2013 г. 12:35 Исправление
    • Предложено в качестве ответа YatajgaModerator 25 июня 2013 г. 18:22
    • Помечено в качестве ответа Континент 1 июля 2013 г. 11:03
    25 июня 2013 г. 12:35
  • По поводу сохранения картинок в бд - можно, но не желательно (это отражается на роизводительности). Лучше хранить картинки в файловой системе, а в базе хранить путь к ним или просто название картинок.


    И как это сделать?
    25 июня 2013 г. 13:08
  • Идея проста, не стану расписывать, вот ссылка, оттуда все понятно. Можете модифицировать под Ваши требования
    25 июня 2013 г. 16:38
  • Спасибо. А нет ли на MVC?
    25 июня 2013 г. 17:18
  • Чтоб комплексно MVC+запись данных, мне кажется в инете что угодно можно найти. Но я Вам скинул две ссылки. Первая - решение для MVC сброс файла на сервер, а вторая - сохранение файла на сервере.
    25 июня 2013 г. 17:32
  • В первом примере всё подробно расписано, попробуйте посмотреть его ещё раз.

    Сделаем содержимое сообщества лучше, вместе!

    25 июня 2013 г. 18:22
    Модератор
  • Что конкретно у вас не получается?

    Сделаем содержимое сообщества лучше, вместе!

    27 июня 2013 г. 11:20
    Модератор
  • Этот код записывает картинку в базу.

      var UploadedImage = Request.Files[0];
      byte[] Image;
      if (Path.GetFileName(UploadedImage.FileName) != String.Empty)
      {
          var ContentType = UploadedImage.ContentType;
          var ContentLength = UploadedImage.ContentLength;
          var InputStream = UploadedImage.InputStream;
          Image = new byte[ContentLength];
          InputStream.Read(Image, 0, ContentLength);
      }
      else
      {
          Image = new byte[0];
      }

    А этот код считывает картинку.

    if(Request["Id"].IsInt())

       {

    var Images = db.QuerySingle(selectQueryString, Request["Image"].AsInt()); Response.BinaryWrite((byte[])Images.Image);

    }

    В принципе надо, до закачки в базу, уменьшить её до, например: width:100px Чтоб место не занимала.

    И вывести в определённое место сайта. Но этого не выходит.

    Вот сам вывод на страницу:

      if (row.Image != null)
      {
        <img src="ShowImage.cshtml?Id=@row.Id" />
      }
    Но изображение не выводится...

    Всё брал отсюда: http://evonet.com.au/webmatrix-uploading-images-with-the-fileupload-helper/


    27 июня 2013 г. 11:33
  • По идее мне надо выводить картинку в этот код:

    @foreach (var row in db.Query(selectQueryString)){ <div> <div>@row.Name</div> <div> @row.Image

    </div> <div>@row.Text</div> </div> }

    Вместо @row.Image надо вывести картинку, а она зараза не выводится.

    Вместо неё надпись: System.Byte[] Видимо @foreach перебивает.
    Что делать?

    27 июня 2013 г. 18:04
  • "В принципе надо, до закачки в базу, уменьшить её до, например: width:100px Чтоб место не занимала." - сжать без потери качества обычно не всегда получится, поэтому лучше оставить так. Вам нужно байты преобразовать в картинку. Вот пример преобразования. А уже на странице указываете ссылку на этот рисунок.

    Сделаем содержимое сообщества лучше, вместе!

    27 июня 2013 г. 19:02
    Модератор
  • Это передача файла на сервер. там Вы найдете что Вам нужно.


    И куда это всё засовывать? В какой файл?
    28 июня 2013 г. 5:48
  • Идея проста, не стану расписывать, вот ссылка, оттуда все понятно. Можете модифицировать под Ваши требования

    И как перевести это в MVC4
    28 июня 2013 г. 5:50
  • В первом примере всё подробно расписано, попробуйте посмотреть его ещё раз.

    Сделаем содержимое сообщества лучше, вместе!


    Подробно? Куда это всё сувать? В .cs ?
    28 июня 2013 г. 5:53
  • Плохие Ваши ссылки. В них нет нормальной реализации в MVC4.

    Таких страниц в интернете уйма. Но реализовать это в MVC4 нельзя.

    28 июня 2013 г. 6:00
  • Ссылка которую привели вы не очень удачная. Я показал лишь часть с декодированием байтов. Но та ссылка, что вам дали в самом начале, от и до показывает весь процесс в MVC, не имеет значения какая это версия.

    Сделаем содержимое сообщества лучше, вместе!

    28 июня 2013 г. 6:02
    Модератор
  • Ссылка которую привели вы не очень удачная. Я показал лишь часть с декодированием байтов. Но та ссылка, что вам дали в самом начале, от и до показывает весь процесс в MVC, не имеет значения какая это версия.

    Сделаем содержимое сообщества лучше, вместе!

    Понятно. Но куда этот код вставлять?

    Попробовал создать папку App_Code и в ней файл с расширением .cs

    В него вставил код. Вылезает целая куча ошибок.

    На самой странице не написано куда вставлять код...

    ВЫШЕ Я ПРИВОДИЛ КОД. КОТОРЫЙ РАБОТАЕТ.

    ЗАПИСЫВАЕТ КАРТИНКУ В БАЗУ.

    НО ВОТ С ВЫВОДОМ ПРОБЛЕМА.

    if(Request["Id"].IsInt()) { var Images = db.QuerySingle(selectQueryString, Request["Image"].AsInt()); Response.BinaryWrite((byte[])Images.Image); }

    В ТАКОМ ВИДЕ КАРТИНКА НЕ ВЫВОДИТСЯ

    ЕСЛИ Я УБИРАЮ if(Request["Id"].IsInt()) ТО КАРТИНКА ПРОСТО ВЫВОДИТСЯ ВО ВЕСЬ БРАУЗЕР.

    Response.BinaryWrite ПРЕОБРАЗУЕТ ИЗ ДВОИЧНОГО КОДА В КАРТИНКУ И ВЫВОДИТ В HTML.

    ВОТ В ЧЁМ ПРОБЛЕМА : ВЫВЕСТИ КАРТИНКУ НА СТРАНИЦУ.

    28 июня 2013 г. 6:27