.net Core 2.0文件上传大小限制

时间:2018-06-02 08:50:53

标签: javascript c# asp.net-mvc file-upload asp.net-core

我在.net core 2.0 MVC网络应用中上传大文件时遇到了麻烦。

我见过这样的文章,它展示了如何增加.net core 2.0中的文件大小限制: Increase upload request length limit in 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 KB的文件时,它会失败。

任何人都可以帮忙吗?

更新: 有关详细信息,当上载文件大小介于122,211 KB和137,840 KB之间时,无论任何RequestSizeLimit设置如何,问题似乎都会发生,并且它始终存在错误。

更新2: 我刚刚将所有.net核心和所有.net核心nuget软件包更新到2.1,但问题仍然存在。

2 个答案:

答案 0 :(得分:4)

为了帮助其他有同样问题的人,我在这里找到答案: Max upload size for ASP.MVC CORE website

事实证明你需要删除这样的体长限制:

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

FormOptions可以在Microsoft.AspNetCore.Http.Features命名空间中找到。

答案 1 :(得分:0)

要解决此问题,您可以使用下面的代码代替[RequestSizeLimit(1_074_790_400)]

[DisableRequestSizeLimit]