Как загрузить файл изображения с помощью MVC2 - PullRequest
0 голосов
/ 19 октября 2010

Я пытаюсь использовать контроллер в MVC2 для загрузки файла, но я получаю ссылку на объект, не установленную для экземпляра ошибки объекта

    [HttpPost]
    public ActionResult AddPhoto(int id, FormCollection formValues, HttpPostedFile image, AlbumPhotos photo )
    {            
        AlbumPhoto photos = new AlbumPhoto();
        UserPhotoAlbum album = AlbumRepo.GetAlbum(id);
        photo.AlbumId = id;
        photos.AlbumId = photo.AlbumId;
        photo.PostedDate = DateTime.Now;
        photos.PostedDate = photo.PostedDate;
        album.LastUpdate = photo.PostedDate;

        if (image.FileName != null)
        {
            photo.PhotoMimeType = image.ContentType;
            photos.PhotoMimeType = image.ContentType;
            photo.PhotoData = new byte[image.ContentLength];
            photos.PhotoData = photo.PhotoData;
            image.InputStream.Read(photo.PhotoData, 0, image.ContentLength);
            photo.PhotoUrl = "../../Content/UserPhotos/" + image.FileName;
            photos.PhotoUrl = photo.PhotoUrl;
            image.SaveAs(Server.MapPath("~/Content/UserPhotos/" + image.FileName));
        }

        AlbumRepo.AddPhotoToAlbum(photos);
        AlbumRepo.Save();

        return RedirectToAction("Album", new { id = photo.AlbumId });
    }

Пожалуйста, скажите мне, если я делаю что-то не так.

1 Ответ

0 голосов
/ 02 июня 2011
  1. Необходимо указать значение <form> tag has a enctype="multipart/form-data" в параметре htmlAttribute объекта, равное Html.BeginForm()

  2. Имя элемента управления входным файлом должно соответствовать именипараметра, переданного в метод действия [HttpPost].

например,

<input type="file" name="uploadControl" />

должно соответствовать по имени:

public ActionResult AddPhoto(int id, FormCollection formValues, HttpPostedFile uploadControl, AlbumPhotos photo)

См. http://www.277hz.co.uk/Blog/Show/7/image-uploading-in-asp-net-mvc для хорошего объяснения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...