Как создать действия контроллера ASP.NET MVC, чтобы они принимали файлы? - PullRequest
0 голосов
/ 14 декабря 2009

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

У меня разработаны схемы таблиц, и сейчас я могу отправлять базовые сообщения различным пользователям.

Теперь я работаю над частью вложений.

Как я могу создать свои методы действий, чтобы они принимали файлы? В идеале я хотел бы разрешить действие контроллера, которое принимает произвольное количество файлов. Как только они будут переданы в действие контроллера, я собираюсь сохранить их где-нибудь на моем веб-сервере.

Может кто-нибудь показать мне пример действия контроллера, который принимает файлы как часть своих параметров?

Ответы [ 4 ]

3 голосов
/ 14 декабря 2009

(Обработка ошибок опущена.)

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult FilePost()
    {
        for (var i = 0; i < Request.Files.Count; i++)
        {
            var filebase = Request.Files.Get(i);
            string filePath = Server.MapPath(Url.Content("~/Content/UserContent/"));
            var fileName = // whatever
            filebase.SaveAs(Path.Combine(filePath, fileName));
         }

        return RedirectToAction("Something");
    }
2 голосов
/ 14 декабря 2009

Вот пост о том, как загрузить файл с ASP.NET MVC

2 голосов
/ 14 декабря 2009

Я считаю, что объект, который вы ищете, это Request.Files пример фрагмента ниже.

foreach (string file in Request.Files) {
    var hpf = Request.Files[file];

    if (hpf.ContentLength == 0)
        continue;

    myFileEntity.ContentType = hpf.ContentType;
    myFileEntity.File = hpf.InputStream.ToByteArray();
    myFileEntity.FileName = hpf.FileName;
}
0 голосов
/ 15 декабря 2009

Проверьте мой ответ в этом посте.

Проблемы с вызовом метода поста контроллера

...