2

我正在尝试将 afile从 a发送postman到 a web api,方法 onweb api需要一个包含文档类型、文件和文件夹名称的类型列表。发布在下面:

网页api方法:

[HttpPost("post-images")]
public async Task<IList<RepositoryItem>> PostAnImages (IList<PostRepoRequest> request)
{
    // rest of the code 
}

PostRepoRequest 类:

public class PostRepoRequest
{
    public FileType FileType { get; set; }
    public IFormFile File { get; set; }
    public string Folder { get; set; }
}

可能会注意到我从未收到过文件,它总是 null,我也尝试将标题内容类型设置为,multipart/form-data但效果不佳..

这里可能有什么诀窍?

谢谢

干杯

4

3 回答 3

4

您需要使用点模式更改请求正文,如下所示:

在此处输入图像描述

然后您需要将 [FromForm] 属性添加到控制器输入参数。另请注意,邮递员和控制器中的变量名称必须匹配。

[HttpPost("post-images")]
public async Task<IList<RepositoryItem>> PostAnImages ([FromForm]IList<PostRepoRequest> repositoryItems)

通过这些更改,您将能够正确获取请求:

在此处输入图像描述

于 2020-03-31T19:53:11.907 回答
1

尝试将文件作为单独的参数发送

[HttpPost("post-images")]
public async Task<IList<RepositoryItem>> PostAnImages (IList<PostRepoRequest> request, [FromForm]List<IFormFile> files)
{
    // rest of the code 
}

在客户端(假设可以是 Angular):

let input = new FormData();
for (var i = 0; i < this.filesToUpload.length; i++) {
   input.append("files", this.filesToUpload[i]);
}
于 2020-03-31T18:40:49.643 回答
0

有一个不可见的选择框,只需将光标向左移动,您就会看到可选择区域。然后选择它作为文件。

在此处输入图像描述

[FromBody]在 ypur 方法参数的开头添加,例如([FromBody]IList<PostRepoRequest> request)

最后,更新Key...[0][file](你忘了[])

于 2020-03-31T18:37:59.420 回答