Ограничение размера загрузки файла .net Core 2.0 - PullRequest
0 голосов
/ 02 июня 2018

У меня проблемы с загрузкой больших файлов в веб-приложение MVC .net core 2.0.

Я видел такие статьи, как эта, в которой показано, как увеличить ограничение размера файла в .netcore 2.0: Увеличение предела длины запроса на загрузку в Kestrel

Итак, следуя примеру, я попробовал оба варианта.В настоящее время у меня есть это в моем Program.cs:

        public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .UseKestrel(options => options.Limits.MaxRequestBodySize = null)
            .Build();

... и мой метод загрузки ajax-файла на контроллер выглядит следующим образом:

    [HttpPost]
    [RequestSizeLimit(1_074_790_400)]
    [Route("api/article/uploadfile/{mediaType}")]
    public async Task<IActionResult> UploadFile(string mediaType)

У меня есть доступ к загруженнымфайлы, использующие Request.Form.Files

Javascript в представлении выглядит следующим образом:

$('#upload-videos').change(function () {
    var files = $("#upload-videos").get(0).files;
    uploadMedia(false, files);
})

function uploadMedia(isPhoto, files) {
    var type;
    if (isPhoto) {
        type = "i";
    }
    else {
        type = "v";
    }

    var data = new FormData();
    if (files.length > 0) {
        for (idx = 0; idx < files.length; idx++) {
                data.append("fileImage" + idx, files[idx]);
        }

        $.ajax({
            url: "/api/article/uploadfile/" + type,
            type: "POST",
            processData: false,
            contentType: false,
            dataType: false,
            data: data,
            success: function (jsonData) {
                refreshUploadedImages(jsonData, isPhoto);
            }
        });
    }
}

Проблема в том, что даже с изменениями, чтобы увеличить лимит загрузки на месте, я получаю ответ:

Не удалось загрузить ресурс: сервер ответил со статусом 500 ()

Если я поставлю точку останова в первой строке метода контроллера, этоникогда не попадает в него, поэтому с этим кодом проблем не возникает.

Все отлично работает с небольшими файлами, но когда я пытаюсь загрузить файл размером 538 286 КБ, это не получится.

Может кто-нибудь помочь с этим?

Обновление: для получения дополнительной информации проблема возникает, когда размер загружаемого файла находится где-то между 122 211 КБ и 137 840 КБ независимо от каких-либо настроек RequestSizeLimit, и ошибки постоянно.

Обновление 2: я только что обновил все пакеты .net core и все пакеты .net core nuget до версии 2.1, но проблема все еще существует.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2019

Чтобы решить эту проблему, вы можете использовать этот код ниже [RequestSizeLimit (1_074_790_400)]

[DisableRequestSizeLimit]

0 голосов
/ 03 июня 2018

Чтобы помочь кому-то еще с той же проблемой, я нашел ответ здесь: Максимальный размер загрузки для веб-сайта ASP.MVC CORE

Оказывается, вам нужно удалить длину телаограничение может быть таким:

services.Configure<FormOptions>(x => x.MultipartBodyLengthLimit = 1_074_790_400);

FormOptions можно найти в пространстве имен Microsoft.AspNetCore.Http.Features.

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