Post запрос с передачей файла и ID (Axios)

Рейтинг: 0Ответов: 0Опубликовано: 30.03.2023

Всем привет. Столкнулся с непонятками при создании запроса.

Имеется Web Api C# И Фронт на VUE JS с Axios

У меня уже есть метод контроллера на шарпе для пост запроса, который принимает файл.

      [HttpPost("[action]")]
    public async Task<List<FileImportResult>> UploadArchive(IFormFile file CancellationToken cancellationToken)
    {
        return await Mediator.Send(new FileUploadCommand { Archive = file }, cancellationToken);
    }

Но мне не удается его дорботать, чтобы он принимал файл и ID поьзователя Пробовал делать так

      [HttpPost("[action]")]
    public async Task<List<FileImportResult>> UploadArchive(IFormFile file,Guid UserId, CancellationToken cancellationToken)
    {
        return await Mediator.Send(new FileUploadCommand { Archive = file, UserId = UserId }, cancellationToken);
    }

И вот так

      [HttpPost("[action]")]
    public async Task<List<FileImportResult>> UploadArchive(FileUploadCommand command, CancellationToken cancellationToken)
    {
        return await Mediator.Send(command, cancellationToken);
    }

где FileUploadCommand это

    public class FileUploadCommand : IRequest<List<FileImportResult>>
{
    [Required]
    public IFormFile Archive { get; set; }
    public Guid UserId { get; set; }
}

Но все тщетно. в контроллер приезжает null

И еще кое что. на фронте, когда отправляю только data (только файл) В нетворк в пост запросе можно посмотреть , что отправлен файл

НО если я отправляю и файл и ID то в нетворк в запросе у меня объект где файл как пустой объект , а с ID все норм

{
Archive: {}
UserID: "******"
}

Вот в таком варианте работает. Где data - это файл.

  public uploadArchive (data: any) {
return Api.post('Import/UploadArchive', data)
  .then((r) => {
    return r.data
  })
  .catch((error) => {
    console.log('error', error)
    return null
  })

}

А вот в таков варинте уже нет... отправляется JSON пример крирого я указал выше с пустым Archive

    public uploadArchive (data: any, id: any) {
    return Api.post('Import/UploadArchive', {Archive: data, UserId: id})
      .then((r) => {
        return r.data
      })
      .catch((error) => {
        console.log('error', error)
        return null
      })
  }

Ответы

Ответов пока нет.