Как кодировать контроллер для загрузки файла mvc3 - PullRequest
0 голосов
/ 18 мая 2011
@model Framely2011.Models.PictureUpload

@{
    ViewBag.Title = "Upload";
}

<h2>Upload</h2>

@using (Html.BeginForm("Upload", "Member", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <input type="file" name="myFile" id="myFile" />

    @Html.TextBoxFor(x => x.MetaTagsObj.Meta1)<br />
    @Html.TextBoxFor(x => x.MetaTagsObj.Meta2)<br />
    @Html.TextBoxFor(x => x.MetaTagsObj.Meta3)<br />

    <input type="submit" value="submit" />
}

Это то, что я имею до сих пор, вот как выглядит моя модель:

public class PictureUpload
    {
        public HttpPostedFile fileName { get; set; }
        public MetaTags MetaTagsObj { get; set; }
    }

Я не уверен, как написать свой контроллер для загрузки изображений или как загрузить файл на контроллер, когда я делаю [HttpPost]

Ответы [ 2 ]

3 голосов
/ 18 мая 2011

Вот как я это делал в прошлом (asp.net mvc 2) ... Вполне может быть, гораздо проще сделать это с .net 4 и asp.net mvc 3

foreach (string upload in Request.Files)
            {
                if (!Request.Files[upload].HasFile()) continue;

                string mimeType = Request.Files[upload].ContentType;
                Stream fileStream = Request.Files[upload].InputStream;
                string fileName = Path.GetFileName(Request.Files[upload].FileName);
                int fileLength = Request.Files[upload].ContentLength;
                byte[] fileData = new byte[fileLength];
                fileStream.Read(fileData, 0, fileLength);
                //do something with the byte array (filedata)
            }

HasFile () - это метод расширения, определенный как:

public static class HttpPostedFileBaseExtensions
{
    public static bool HasFile(this HttpPostedFileBase file)
    {
        return (file != null && file.ContentLength > 0);
    }
}

enter code here
0 голосов
/ 18 мая 2011

Вы можете просто взять свою модель в качестве параметра в методе действия [HttpPost] и прочитать свойство fileName.

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