文件POST返回错误415

mor*_*oro 4 c# upload controller asp.net-web-api asp.net-core

我正在尝试在我的ASP.NET Core 2项目中创建文件上载功能.
我将POST调用发送到WEBApi服务时收到此响应:

状态代码:415; 不支持的媒体类型

我的控制器操作如下所示:

    [HttpPost]
    [Route("Upload")]
    [Authorize]
    public Guid Post([FromBody]IFormFile file)
    {
        Stream readStream = file.OpenReadStream();

        byte[] fileData = new byte[file.Length];

        readStream.Read(fileData, 0, fileData.Length);

        return _printServiceManager.SaveFile(fileData);
    }
Run Code Online (Sandbox Code Playgroud)

我从我的Angular 6客户端应用程序和Postman调用它,但没有任何变化.我在这里找到了一个关于这个主题的问题,但给出的解决方案是将我的标题更改为"Content-Type:application/json".没有变化.
然后我尝试在网上搜索其他一些提示,但我找到的唯一一个提醒我再次更改内容类型标题:"Accept:application/json".不行.

也许我问一些简单的或我应该知道作为一个Web开发人员,但我来自一个后端导向的职业生涯,我试图找出什么是错我的代码.因此,如果您有关于该主题的完整资源,请分享!

试图按照建议再次更改内容类型,但我获得了相同的结果:
在此输入图像描述

提前致谢.

Chr*_*att 6

根据定义IFormFile无法获得使用FromBody.IFormFile仅适用于multipart/form-data编码请求,而FromBody只适用于JSON或XML请求主体.

因此,您有两条路径:

  1. 提交文件multipart/form-data(即传统帖子).[FromForm]改为使用(或者完全忽略该属性).

  2. 实际上将文件作为JSON提交,在这种情况下,您需要绑定到一个类来表示您要发布的JSON对象.文件数据应该是JSON对象中的base64编码字符串,然后您将其绑定到类型的属性byte[].ASP.NET Core将把base64字符串解码为字节数组.