Dot-Net

.NET Core 2:如何檢查請求是否為 MIME 多部分內容?

  • April 10, 2020

在 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.");
   }
}

ASP.NET MVC Core 使用該IFormFile介面綁定多部分 HTTP 請求。如果請求不使用 multipart/form-data,文件說明綁定值將為空。

您可以使用屬性HttpRequest.HasFormContentType檢查請求是多部分/表單數據

然後使用屬性HttpRequest.Form.Files在請求中存在文件

例子:

public async Task Invoke(HttpContext context)
{

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

   }
}

引用自:https://stackoverflow.com/questions/45871479