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

时间:2017-08-24 21:54:08

标签: .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.");
    }
}

2 个答案:

答案 0 :(得分:2)

ASP.NET MVC Core使用IFormFile接口绑定多部分HTTP请求。如果请求不使用multipart / form-data,则documentation表示绑定值为null。

答案 1 :(得分:-1)

您可以使用属性HttpRequest.HasFormContentType

检查请求是否为多部分/表单数据

然后使用属性HttpRequest.Form.Files

在请求中显示文件

示例:

public async Task Invoke(HttpContext context)
{

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

    }
}