BAD Reuqest Невозможно создать и заполнить тип списка Microsoft.AspNetCore.Http.IFormFileCollection - PullRequest
0 голосов
/ 13 мая 2019

Я получаю неверный запрос при загрузке моего файла, преобразовании его в json и передаче в мой контроллер .net core webapi.

здесь скриншот с ошибкой. У меня также есть консоль модели.

enter image description here

вот мой код в машинописи

        const httpHeaders = new HttpHeaders({
          'Content-Type': 'application/json',
        });
        var approval = {
          ...this.MemberApproval,
        };
        console.log(JSON.stringify(approval));
        return this.http.post(this.Url + '/Member/UpdateMember/update',   JSON.stringify(approval), { headers: httpHeaders });

на .net core webapi я делаю так.

Моя модель:

      public class MemberApproval
        {
            public string Notes;
            public IFormCollection Attachment;
            public int ApprovalStatus;
            public int SubsId;
            public int MemberId;
        }

Мой контроллер:

         [Route("[action]/{item}")]
            [HttpPost]
            public IActionResult UpdateMember([FromBody]MemberApproval approval )
            {


                if (approval !=null)
                {
                    _repo.UpdateMemberStatus(approval);

                }

                return Ok();
            }

1 Ответ

1 голос
/ 13 мая 2019

Если вы хотите отправить файл в ASP.Net Core, вы должны использовать FromForm и IFormFile следующим образом:

[HttpPost("SavePost")]
public async Task<IActionResult> SavePost([FromForm]PostViewModel viewModel)
{
    var postOptionsViewModel = _jsonParsePostOptionDefaultVm.ToObject(viewModel.PostOptionsViewModel);
    viewModel.PostOptionsDefaultViewModel = postOptionsViewModel;

    if (viewModel.Id.HasValue)
    {
        await _postRepository.EditPost(viewModel);
    }
    else
    {
        await _postRepository.SavePost(viewModel);
    }

    return Ok();
}

Моя модель будет иметь свойство List, чтобы вы могли отправить мультифайл на сервер

public List<IFormFile> File { get; set; }

Мой код стороны FE будет таким.Я использую реагирование, но в основном не отличается от того, как мы отправляем данные формы на сервер

const formdata = new FormData();
formdata.append("Title", this.state.title);
formdata.append("File", this.state.File);

Не забудьте установить заголовок Content-Type на 'multipart / form-data'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...