Sla*_*ade 8 javascript c# asp.net-mvc file-upload asp.net-core
我在.net core 2.0 MVC Web应用程序中上传大文件时遇到了麻烦.
我看过这篇文章,比如这篇文章,展示了如何增加.net core 2.0中的文件大小限制: 增加Kestrel的上传请求长度限制
所以,按照这个例子,我尝试了两种选择.我目前在我的Program.cs中有这个:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options => options.Limits.MaxRequestBodySize = null)
.Build();
Run Code Online (Sandbox Code Playgroud)
...并且我在控制器上的ajax文件上传方法如下所示:
[HttpPost]
[RequestSizeLimit(1_074_790_400)]
[Route("api/article/uploadfile/{mediaType}")]
public async Task<IActionResult> UploadFile(string mediaType)
Run Code Online (Sandbox Code Playgroud)
我正在使用上传的文件 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);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,即使有了增加上传限制的更改,我也会收到回复:
无法加载资源:服务器响应状态为500()
如果我在控制器方法的第一行放置一个断点,它永远不会命中它,所以它似乎不是这个代码的问题.
一切正常,文件很小,但是当我尝试上传大小为538,286 KB的文件时,它会失败.
有人能帮忙吗?
更新:有关详细信息,当上载文件大小介于122,211 KB和137,840 KB之间时,无论任何RequestSizeLimit设置如何,问题似乎都会发生,并且它一致地出错.
更新2:我刚刚将所有.net核心和所有.net核心nuget软件包更新到2.1,但问题仍然存在.
为了帮助其他有同样问题的人,我在这里找到了答案: Max upload size for ASP.MVC CORE website
事实证明,您需要像这样删除主体长度限制:
services.Configure<FormOptions>(x => x.MultipartBodyLengthLimit = 1_074_790_400);
Run Code Online (Sandbox Code Playgroud)
FormOptions可以在Microsoft.AspNetCore.Http.Features命名空间中找到。
| 归档时间: |
|
| 查看次数: |
4492 次 |
| 最近记录: |