.NET Core 2:如何检查请求是否为 MIME 多部分内容?

Sae*_*eid 9 .net asp.net-core asp.net-core-2.0

在 ASp.NET MVC 中,您可以检查当前请求是否为 MIME 多部分内容。如何在 .NET Core 中检查?我有一个动作过滤器来验证它,但不确定如何评估请求标头。IsMimeMultipartContent 在 .NET Core 中不可用。

/// <summary>
/// Checks whether the current request specified content is MIME multipart content.
/// </summary>
/// <exception cref="HttpRequestException">Raised when the current request doesn't have MIME multipart content.</exception>
public class HasMimeMultipartContentAttribute : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext context)
    {
        if (!context.HttpContext.Request.Headers.IsMimeMultipartContent())
            throw new HttpRequestException("This request does not contain any file to upload.");
    }
}
Run Code Online (Sandbox Code Playgroud)

Sta*_*cev 9

您可以使用属性HttpRequest.HasFormContentType检查请求是否为 multipart/form-data

然后使用属性HttpRequest.Form.Files来判断请求中是否存在文件

例子:

public async Task Invoke(HttpContext context)
{

    if (context.Request.HasFormContentType && context.Request.Form.Files.Any)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)


Mat*_*nda 6

ASP.NET MVC Core 使用该IFormFile接口绑定多部分 HTTP 请求。如果请求不使用 multipart/form-data,文档说明绑定值将为空。

  • 这是正确的方法。要检查请求是否具有多部分边界,请求属性有一个名为“GetMultipartBoundary()”的方法。如果它返回 null,则最好检查请求中没有任何文件。 (7认同)