设置最小和最大文件大小用于 asp.net 核心中的文件上传
Set minimum and maximum file size For file upload in asp.net core
如何在 asp.net core 3 中设置文件上传的最小和最大大小?
我试图找到任何方法来解决这个问题
刚刚在网上找到了定义最大尺寸的方案
在我看来,如果你想检查文件上传的最小和最大文件大小,我建议你可以尝试创建一个 custom middleware 来检查 httpcontentlength,如果 http 内容长度没有匹配最小和最大尺寸,然后您可以 return 自定义响应。
更多详情,您可以参考以下代码:
将以下中间件添加到startup.cs配置方法中:
注意:我使用app.usewhen来检查路径,这只对包含"api"的url路径有效。如果你想匹配所有的请求,你可以直接使用 app.Use
.
app.UseWhen(context =>
context.Request.Path.StartsWithSegments("/api"),
CheckRequestLengthAsync);
CheckRequestLengthAsync 方法:
private void CheckRequestLengthAsync(IApplicationBuilder app)
{
app.Use(async (context, next) =>
{
if (context.Request.ContentLength <50 && context.Request.ContentLength > 5)
{
context.Response.StatusCode = 500;
context.Response.ContentType = "text/html";
await context.Response.WriteAsync("Not match the content length");
}
else
{
// Do work that doesn't write to the Response.
await next();
// Do other work that doesn't write to the Response.
}
});
}
结果:
回答@brando-zhang 已写但需要稍作修改
if (context.Request.ContentLength <10000 || context.Request.ContentLength > 200000)
允许 10kb-200kb
如何在 asp.net core 3 中设置文件上传的最小和最大大小? 我试图找到任何方法来解决这个问题 刚刚在网上找到了定义最大尺寸的方案
在我看来,如果你想检查文件上传的最小和最大文件大小,我建议你可以尝试创建一个 custom middleware 来检查 httpcontentlength,如果 http 内容长度没有匹配最小和最大尺寸,然后您可以 return 自定义响应。
更多详情,您可以参考以下代码:
将以下中间件添加到startup.cs配置方法中:
注意:我使用app.usewhen来检查路径,这只对包含"api"的url路径有效。如果你想匹配所有的请求,你可以直接使用 app.Use
.
app.UseWhen(context =>
context.Request.Path.StartsWithSegments("/api"),
CheckRequestLengthAsync);
CheckRequestLengthAsync 方法:
private void CheckRequestLengthAsync(IApplicationBuilder app)
{
app.Use(async (context, next) =>
{
if (context.Request.ContentLength <50 && context.Request.ContentLength > 5)
{
context.Response.StatusCode = 500;
context.Response.ContentType = "text/html";
await context.Response.WriteAsync("Not match the content length");
}
else
{
// Do work that doesn't write to the Response.
await next();
// Do other work that doesn't write to the Response.
}
});
}
结果:
回答@brando-zhang 已写但需要稍作修改
if (context.Request.ContentLength <10000 || context.Request.ContentLength > 200000)
允许 10kb-200kb