通过 Unobtrusive Ajax 上传 Asp.net core 文件不工作

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

我有一个行动方法:

[RequestSizeLimit(int.MaxValue)]
[RequestFormLimits(ValueLengthLimit = int.MaxValue, MultipartBodyLengthLimit = int.MaxValue)]
[HttpPost]                
[MultipartFormData]
[DisableFormValueModelBinding]        
public async Task<PartialViewResult> Upload(/*[FromQuery] string path*/)
{
...
}

和部分视图:

<form id="frmUpload" method="post" data-ajax="true" data-ajax-method="post" data-ajax-url="@(Url.Action("Upload", "Home"))"
      data-ajax-mode="replace" data-ajax-update="#divUpload" data-ajax-loading="#loading"
      data-ajax-failure="failed" enctype="multipart/form-data">
    <div class="row mt-2">
        <div class="col-md-4">
            <input type="file" name="battlePlans" multiple>
        </div>
        <div>
            <input type="submit" value="Submit" class="btn btn-primary" />
        </div>
    </div>
</form>

@if (ViewBag.Success != null)
{
    <h2 class="alert @(ViewBag.Success ? "alert-success" : "alert-danger")" id="frmMessage">@ViewBag.Message</h2>    
}

和Index.cshtml视图:

<div id="divUpload">
    <partial name="IndexPartials/Upload.cshtml" model="null" view-data="@ViewData" />
</div>

@section Scripts {    
    <script>
        $(function () {           
            $.ajax({               
                timeout: 2 * 60 * 60 * 1000, // 2 hour
                maxChunkSize: 1000000 // 1 MB
            });
        });
    </script>
}

程序.cs:

builder.Services.Configure<FormOptions>(options =>
{    
    options.MultipartBodyLengthLimit = int.MaxValue;
    options.ValueLengthLimit = int.MaxValue;
});

当我上传一些小文件时,文件正在上传。但为了测试,我上传了一个 580MB 的文件,我等待了很长时间,但在 IIS Express 和 VS 2022 中文件上传未完成。(此外,在运行期间,我在循环中放置了一个断点,读取和写入它命中的字节,然后我删除了断点并单击继续以便继续执行)。

无论我等多久,文件都没有完全复制,只有我上传了一些兆字节,如何纠正这个问题?

asp.net-core file-upload large-files
1个回答
0
投票

尝试添加一个web.config并添加以下配置部分,更新此限制以支持最大580MB的文件:

web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
        <!-- Removed other configuration -->
        <security>
            <requestFiltering>                  
                <requestLimits maxAllowedContentLength="999217728"/>
            </requestFiltering>
        </security>
    </system.webServer>
</configuration>

结果:

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