Я пытаюсь загрузить изображение на сервер с Axios, но с ошибкой 400 «Bad Request».
Я пробовал много разных способов его реализации: явное указание «Content-Type», смена контроллера, попытка $.ajax
и т. Д. От Google.
Краткое описание того, что я ожидаю: я выбираю изображение в соответствии с предложением <input/>
и после отправки своего выбора оно отправляется на сервер.
В настоящее время в моем контроллере я установил точку останова, однако я никогда не видел, чтобы запрос вводил ее.
Мой стек - Asp.Core WebAPI + React.js + Axios.
Я остановился на следующем коде:
Контроллер:
[Route("api/char")]
[ApiController]
public class CharacterController : ControllerBase
{
[HttpPost]
[Route("[action]")]
public async Task<IActionResult> SetProfilePhoto(IFormFile file)
{
return Ok();
}
}
Реагирующий компонент:
export default class BioEdit extends React.Component {
...
changePhoto = event => {
event.preventDefault();
const file = event.target.files[0];
const formData = new FormData();
formData.append("File", file);
Axios.post("api/char/SetProfilePhoto", formData, {
headers: { 'Content-Type': 'multipart/form-data' }
})
.catch(error => console.log(error));
}
render(){
return (
<label >
<img src={this.state.char.image} width="30%" height="30%" className="border border-secondary" />
<input type="file" style={{ display: "none" }} accept="image/*" onChange={this.changePhoto} />
</label>
);
}
}
Вот что у меня в браузере (яндекс браузер конкретно, на базе Chrome):
![browser console](https://i.stack.imgur.com/2EjFY.png)