Как добавить изображение (путь к изображению / двоичный файл) в базу данных с помощью Entity Framework 6 на Asp.Net MVC 5? - PullRequest
0 голосов
/ 18 апреля 2019

Я изо всех сил пытаюсь добавить свое загруженное изображение в свою таблицу базы данных в первом проекте кода с MVC 5 и EF 6. Каждый ввод, например, Имя файла, Имя, Имя телефона.обновляют базу данных, но я не могу сохранить данные изображения для хранения в моей таблице базы данных.(Опять же, чтобы устранить путаницу, я не пытаюсь сохранить само изображение.)

Я пробовал VarChar (Max) и VarBinary (Max).Я публикую некоторые коды этого конкретного класса в представлениях, контроллере и модели.

Это моя модель, Movie.cs

        public byte[] Poster { get; set; }
        public string AltText { get; set; }

Мой контроллер:

     [HttpPost]
      [ValidateAntiForgeryToken]
      public ActionResult Create([Bind(Include = 
      "MovieID,MoviesName,ReYear,Description, 
       UnitPrice,Rating,AltText,GenreID")] Movie movie, HttpPostedFileBase 
            img)
           {

           if (ModelState.IsValid)
              {
               if (movie.img.ContentLength > 0)
                  {
                   string fileName = Path.GetFileName(movie.img.FileName);
                   string extension = 
                      Path.GetExtension(movie.img.FileName);
                     fileName = fileName + DateTime.Now.ToString 
                                ("yymmssfff")+ extension;
                     movie.AltText = "~/Content/Poster/" + fileName;
                     fileName = 
                        Path.Combine(Server.MapPath("~/Content/Poster"), 
                         fileName);
                  movie.img.SaveAs(fileName);
                using (MovieContext db = new MovieContext())
                {

                    db.Movies.Add(movie);
                    db.SaveChanges();
                }

            }
            return RedirectToAction("Index");
        }

        ViewBag.GenreID = new SelectList(db.Genres, "GenreID", 
                          "GenreType", movie.GenreID);
        return View(movie);
    }

И мой вид:

        @model BigHits.Models.Movie
        @using (Html.BeginForm("Create", "Movies", null, FormMethod.Post, 
        new { enctype = "multipart/form-data" }))

       <div class="form-group">
       @Html.LabelFor(model => model.AltText, htmlAttributes: new { @class 
                            = "control-label col-md-2" })
         <div class="col-md-10">
         <input type="file" id="img" name="img"  />
         </div>
       </div>

Теперь япоявляется эта ошибка всякий раз, когда я пытаюсь загрузить изображение.

  Object reference not set to an instance of an object. 
   Description: An unhandled exception occurred during the execution of the 
   current web request. Please review the stack trace for more information 
   about the error and where it originated in the code. 

   Exception Details: System.NullReferenceException: Object reference not 
   set to an instance of an object.

  Source Error: 


  Line 92:    string fileName = Path.GetFileName(movie.img.FileName);
  Line 93:    string extension = Path.GetExtension(movie.img.FileName);

1 Ответ

0 голосов
/ 18 апреля 2019

Вы можете попробовать:

@Html.LabelFor(model => model.AltText, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.EditorFor(model=>model.'Your attributes', new { @class = "form-control", @type="file" })
...