尝试拦截 POST 请求时出现 415 UnsupportedMediaType

415 UnsupportedMediaType when trying to intercept a POST request

我的 Feed 提供商通过 POST 请求向我的服务器发送一个 .gz 文件(zip 文件)。

我正在尝试实现将拦截 POST 请求并解压缩文件以打开其中文件的 .NET 代码。

我只是想拦截 POST 请求并解压缩内容:

namespace app.Controllers
{
    [Route("")]
    public class FeedController : Controller
    {
        [HttpPost]
        public string Post([FromBody] string content)
        {
            return content;
        }
    }
}

它 returns 415 UnsupportedMediaType。

如何拦截POST请求是一个ZIP文件,如何解压到return里面的文件?

谢谢。

编辑:

[HttpPost]
        [Consumes("multipart/form-data")]
        public IActionResult Post(IFormFile file)
        {
            if (file == null)
                return BadRequest();

            try
            {
                using (var zip = new ZipArchive(file.OpenReadStream()))
                {
                    // do stuff with the zip file
                }
            }
            catch
            {
                return BadRequest();
            }

            return Ok();
        }

您是否缺少 ContentType header? Check out this case 了解更多详细信息。

部分问题已解决。

要读取由 POST 请求发送的 .gz 文件,您应该这样做:

[HttpPost]
        [Consumes("application/gzip")]
        public IActionResult Post(IFormFile file)
        {

                WebClient Client = new WebClient();
                Client.DownloadFile("http://xxxxxx.com/feed.gz", "C:\temp\mygzipfile.gz");
                // do something with this file
            return Ok();
        }