Загрузка файла MVC ASP.net: путь к файлу пуст после отправки - PullRequest
2 голосов
/ 12 декабря 2011

У меня есть это HTML :

<% using (Html.BeginForm("Upload", "BulkUpload", FormMethod.Post, new { enctype = "multipart/form-data" })) { %>
    <%: Html.TextBoxFor(model => model.UploadFile, new { @type = "file" }) %>
    <%: Html.ValidationMessageFor(model => model.UploadFile, "*") %>
    <%= Html.Button("submit", "Upload", null) %>
<% } %>

И это Модель :

public class BulkUploadVM
{
    [DisplayName("File to import")]
    public HttpPostedFileBase UploadFile { get; set; }
}

И это Контроллер :

[HttpPost]
public ActionResult Upload(BulkUploadVM model)
{
    if (ModelState.IsValid)
    {
        var stream = model.UploadFile.InputStream;

        // Process stream ...
    }

    return View("Index", model);
}

Файл загрузки правильно размещен в контроллере, но когда контроллер возвращает представление с моделью (у которой есть действительный файл загрузки), путь к файлу на странице пуст?Это поведение по умолчанию?Или я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2011

Как уже описано Oded, не возможно установить значение из элемента ввода загрузки файла из соображений безопасности.

См. RFC 1867 и по этой ссылке . Тип ввода файла создает поле, через которое пользователи могут загружать файлы со своего локального компьютера или сети.Атрибут VALUE указывает имя исходного файла, но он обычно игнорируется браузерами в качестве меры безопасности.

0 голосов
/ 12 декабря 2011
<% using (Html.BeginForm("Upload", "Home", new { BulkUploadVM = Model }, 
               FormMethod.Post,   new { enctype = "multipart/form-data" })) { %>

    <%= Html.TextBoxFor(model => model.UploadFile, new { @type = "file" }) %>
    <%= Html.ValidationMessageFor(model => model.UploadFile, "*") %>

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

    <% } %>

Установить объект routeValues ​​

new { BulkUploadVM = Model }
...