Post запрос с передачей файла и ID (Axios)
Всем привет. Столкнулся с непонятками при создании запроса.
Имеется 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
})
}