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

    Question

  • Как записывать картинку из формы на сайте в базу данных и считывать.

    <input name="Image" type="file" accept="image/*" value="@Image"/>

    Tuesday, June 25, 2013 12:15 PM

Answers

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

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


    Tuesday, June 25, 2013 12:35 PM

All replies

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

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


    Tuesday, June 25, 2013 12:35 PM
  • По поводу сохранения картинок в бд - можно, но не желательно (это отражается на роизводительности). Лучше хранить картинки в файловой системе, а в базе хранить путь к ним или просто название картинок.


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

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

    Tuesday, June 25, 2013 6:22 PM
    Moderator
  • Что конкретно у вас не получается?

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

    Thursday, June 27, 2013 11:20 AM
    Moderator
  • Этот код записывает картинку в базу.

      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/


    Thursday, June 27, 2013 11:33 AM
  • По идее мне надо выводить картинку в этот код:

    @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 перебивает.
    Что делать?

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

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

    Thursday, June 27, 2013 7:02 PM
    Moderator
  • Это передача файла на сервер. там Вы найдете что Вам нужно.


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

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

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


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

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

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

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

    Friday, June 28, 2013 6:02 AM
    Moderator
  • Ссылка которую привели вы не очень удачная. Я показал лишь часть с декодированием байтов. Но та ссылка, что вам дали в самом начале, от и до показывает весь процесс в 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.

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

    Friday, June 28, 2013 6:27 AM