如何通过Web API中的发布请求接收流和对象?

Jen*_*ler 5 c# rest asp.net-web-api

我目前正在使用Web API开发REST Web服务。

现在,我试图通过帖子接收流文件和对象。

当我发送没有JobPosition对象的文件时,我正确地接收了文件,当我发送没有文件的JobPosition文件时,我也正确地接收了JobPosition。

但是,当我通过邮递员发送流文件和对象时,会收到错误消息。

非常感谢您的帮助,以了解这是否可行,如果可以的话,将对我有所帮助。

public class JobPosition
{
    public int Id { set; get; }
    public string Title { set; get; }
}

[HttpPost]
[Route("Job")]
public async Task<bool> Post(JobPosition job)
{
    var multipartMemoryStreamProvider = new MultipartMemoryStreamProvider();
    await Request.Content.ReadAsMultipartAsync(multipartMemoryStreamProvider, new CancellationToken());
    var stream = await multipartMemoryStreamProvider.Contents[0].ReadAsStreamAsync();
    // implementaion
    return true;
}
Run Code Online (Sandbox Code Playgroud)

邮递员要求: 在此处输入图片说明 在此处输入图片说明

我尝试了Content-Type的所有可能组合,但均未成功。

Tod*_*odd 4

删除 (JobPosition job)操作函数参数,并通过对象使用您自己的代码读取该参数multipartMemoryStreamProvider

await multipartMemoryStreamProvider.Contents[0].ReadAsStreamAsync(); //Stream
await multipartMemoryStreamProvider.Contents[1].ReadAsStreamAsync(); //JSON
Run Code Online (Sandbox Code Playgroud)

类似的事情。顺序很重要。最好假设它可以按任何顺序出现,循环遍历 Contents 集合,并根据变量的名称进行处理。