Загрузка нескольких файлов - MVC... есть ли ограничение на общий размер файла?

У меня есть форма, из которой пользователи могут добавить список свойств. Помимо данных, которые пользователь должен ввести, пользователь также может загрузить несколько изображений. Я использую несколько атрибутов HTML5, чтобы позволить пользователям загружать более одного файла одновременно.

По какой-то причине у меня всегда срабатывает метод HttpPost Add, когда я загружаю одно изображение. Однако, когда я пытаюсь загрузить несколько изображений, метод не срабатывает. До сих пор я не получаю никаких ошибок, поэтому я не уверен, что не так с моей реализацией.

HTML

@using (Html.BeginForm("AddProperty", "User", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <fieldset>
        <legend>Property</legend>

        <div class="editor-label">
            Title
        </div>
        <div class="editor-field">
            <input type="text" name="title" />
        </div>

        <div class="editor-label">
            Description
        </div>
        <div class="editor-field">
            <input type="text" name="desc" />
        </div>

        @* ... more input fields... *@

        <div class="editor-label">
            Images
        </div>
        <div class="editor-field">
            <input type="file" multiple="multiple" name="file" />
        </div>

        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

контроллер

[HttpPost]
public ActionResult AddProperty(FormCollection form, IEnumerable<HttpPostedFileBase> file)
{
    Property p = new Property();
    p.Title = form["title"];
    p.Description = form["desc"];

    // ... setting Property fields

    new PropertiesBL().AddProperty(p);

    for (int i = 0; i < file.Count(); i++)
    {
        // ... loop and save uploaded file(s)
    }
}

Любая помощь будет оценена.

РЕДАКТИРОВАТЬ - Дальнейшее тестирование

Чтобы проверить загрузку файла, я создал новое представление с помощью формы, содержащей загрузчик файлов. Я пытался загрузить файлы разных типов. Я заметил, что при загрузке, например, 10 документов, метод Upload срабатывает. Но при попытке загрузить 3 (большие) изображения это не сработало. Я думаю, что есть какое-то ограничение в отношении общего количества загружаемых байтов... Я не уверен, имеет ли это смысл.

Простой тест

<form method="post" action="/Test/Upload" enctype="multipart/form-data">
    <input type="file" multiple="multiple" name="images" />
    <input type="submit" value="Upload" />
</form>

[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> images)
{
    return RedirectToAction("Index");
}

Я также попытался загрузить несколько файлов отдельно. Когда я пытаюсь загрузить 3 больших изображения (каждое изображение около 2 МБ), метод не срабатывает. Я почти уверен, что это проблема, связанная с каким-то общим максимальным размером файла.

<form method="post" action="/Test/Upload" enctype="multipart/form-data">
    <input type="file" name="image_1" />
    <input type="file" name="image_2" />
    <input type="file" name="image_3" />
    <input type="submit" value="Upload" />
</form>

1 ответ

Решение

Проблема была с максимальным количеством байтов, которое можно загрузить. Это можно изменить, установив maxRequestLength в файле web.config.

Ссылка

Как загрузить большие файлы с помощью MVC 4?

Код:

<system.web>

    <httpRuntime targetFramework="4.5" 
        maxRequestLength="2147483647"
        executionTimeout="1600" 
        requestLengthDiskThreshold="2147483647" />
   ....

</system.web>

Ответ на связанный вопрос, перечисляет следующее под <system.web> тег, однако я мог только добавить его в <system.webServer> тег:

<system.webServer>

    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="2147483647" />
        </requestFiltering>
    </security>
    ....

</system.webServer>
Другие вопросы по тегам