无法使用 Razor Pages .Net Core 上传相对较大的视频文件

问题描述 投票:0回答:1

我正在尝试创建一个网络应用程序,可以将视频文件上传到云端,然后播放它们。我在上传相对较大的视频文件时遇到问题。当我上传一个相对较小的视频文件时,一切都会正常工作。

我对此进行了广泛的研究,但似乎没有任何效果。为了演示目的,我在一个小例子中重新创建了我的问题

这是.cshtml:

<form method="post" enctype="multipart/form-data">
    <input type="file" asp-for="UploadedFile" />
    <input asp-page-handler="Upload" class="btn" type="submit" value="Upload">
</form>

这是.cshtml.cs

[RequestFormLimits(MultipartBodyLengthLimit = 104857600)]
public class TrialUploadModel : PageModel
{

    [BindProperty]
    public IFormFile UploadedFile { get; set; }
    public void OnGet()
    {
    }


    public async Task<IActionResult> OnPostAsync()
    {

        Console.Write("Success!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        using (var stream = UploadedFile.OpenReadStream())
        {
            Console.Write(stream.Length);
        }
        return Page();

    }
}

如您所见,我已将 [RequestFormLimits(MultipartBodyLengthLimit = 104857600)] 添加到页面,我还创建了一个 web.config 并在那里扩展了限制大小,但我仍然遇到同样的问题。

我还在 StartUp.cs 中增加了 FormOptions 但仍然没有运气:

services.Configure<FormOptions>(x =>
{
    x.ValueLengthLimit = int.MaxValue;
    x.MultipartBodyLengthLimit = int.MaxValue;
    x.MultipartHeadersLengthLimit = int.MaxValue;
});

services.Configure<KestrelServerOptions>(options =>
{
    options.Limits.MaxRequestBodySize = int.MaxValue;
});

当我使用 IIS 启动应用程序时,我得到以下信息: RequestTooLargeError

c# asp.net-core razor file-upload razor-pages
1个回答
0
投票

对于.Net Core 6和Razor Pages,我们在Microsoft文档中提供了一些提示(https://learn.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads?view=aspnetcore-6.0

在 Program.cs 中,他们将文件限制作为针对执行上传的页面的选项:

// Add services to the container.
builder.Services.AddRazorPages(options => 
{
options.Conventions
    .AddPageApplicationModelConvention("/[your cshtml page name with no extension]",
        model =>
        {
            model.Filters.Add(
            new RequestFormLimitsAttribute()
            {
                // Set the limit to 256 MB
                ValueLengthLimit = 268435456,
                MultipartBodyLengthLimit = 268435456,
                MultipartHeadersLengthLimit = 268435456
            });
           // model.Filters.Add(
           //     new RequestSizeLimitAttribute(268435456));
        });
    });

在文档中,他们只是添加了 MultipartHeadersLengthLimit,但我还包含了您也有兴趣更改的其他限制。

在您的页面模型中包括:

[DisableRequestSizeLimit]
[RequestFormLimits(MultipartBodyLengthLimit = 268435456)]
public class YourPageNameModel : PageModel
{ ...}

请注意,要遵循他们的示例,如果您尝试上传不同的扩展名,则必须使用正确的文件签名更新 FileHelper.cs。否则,页面将返回无效状态。

© www.soinside.com 2019 - 2024. All rights reserved.