Как я могу отправить файл в список -. net core web api - почтальон - PullRequest
1 голос
/ 31 марта 2020

Я пытаюсь отправить file из postman в web api, метод web api ожидает список типа, который содержит do c тип, имя файла и папки .. размещено ниже:

Метод веб-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; }
}

Как можно заметить, я никогда не получал файл, всегда ноль , я попытался также установить тип содержимого заголовка как multipart/form-data, но это не сработало ...

В чем тут может быть хитрость?

Спасибо

Приветствия

Ответы [ 3 ]

2 голосов
/ 31 марта 2020

Вам нужно изменить тело запроса с точечным шаблоном следующим образом:

enter image description here

Затем вам нужно добавить атрибут [FromForm] на вход контроллера параметр. Также обратите внимание, что имена переменных в почтальоне и контроллере должны совпадать.

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

С этими изменениями вы сможете правильно получить запрос:

enter image description here

1 голос
/ 31 марта 2020

Попробуйте отправить файл как отдельный параметр

[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]);
}
0 голосов
/ 31 марта 2020

Там есть невидимое поле выбора, просто переместите курсор влево, и вы увидите область выбора. Затем выберите его как файл.

enter image description here

и добавьте [FromBody] в начале параметра метода ypur, например ([FromBody]IList<PostRepoRequest> request)

И наконец, обновите Key до ...[0][file] (вы забыли [])

...