несколько загрузок изображений в mvc3 - PullRequest
0 голосов
/ 16 марта 2012

Если у меня ситуация как ниже, где я успех. обрабатывать загрузку изображений и хранить их в БД. Имея в виду этот код, как бы вы реализовали загрузку нескольких изображений. Спасибо.

Итак, первым делом.

PropertyViewModel.cs

...
public byte[] ImageData { get; set; }
public string ImageMimeType { get; set; }

public PropertyViewModel(Property x)
{
  ....
  ImageData = x.ImageData;
  ImageMimeType = x.ImageMimeType;
}

public void ToDomainModel(Property x)
{
  ....
  x.ImageData = ImageData;
  x.ImageMimeType = ImageMimeType;
}

Теперь создайте страницу бритвы Create.cshtml

 @using (Html.BeginForm("Create", "Property", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
  ...
   <input type="file" name="Image"/>
}

}

Контроллер для обработки запроса

[HttpPost]
public ActionResult Create(PropertyViewModel newProperty, HttpPostedFileBase image)
        {
            if (ModelState.IsValid)
            {
                if (image != null)
                {
                    newProperty.ImageMimeType = image.ContentType;
                    newProperty.ImageData = new byte[image.ContentLength];

                    image.InputStream.Read(newProperty.ImageData, 0, image.ContentLength);
                }
                using (session...)
                {
                    using (...begin transaction)
                    {
                        MyDomain.Property model = new MyDomain.Property();
                        newProperty.ToDomainModel(model);
                        ..session save model
                        .. commiting session
                    }
                }
                return RedirectToAction("Index");
            }
            else
            {
                return View(newProperty);
            }
        }

1 Ответ

0 голосов
/ 16 марта 2012
@using (Html.BeginForm("Create", "Property", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    ...
    <input type="file" name="Image"/>
    <input type="file" name="Image"/>
    <input type="file" name="Image"/>
    <input type="file" name="Image"/>
}

или, если браузер поддерживает HTML5, вы можете выбрать несколько файлов в диалоговом окне загрузки:

@using (Html.BeginForm("Create", "Property", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    ...
    <input type="file" name="Image" multiple="multiple"/>
}

и затем:

public ActionResult Create(PropertyViewModel newProperty, IEnumerable<HttpPostedFileBase> image)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...