У меня есть сервис, в котором я загружаю данные формы, используя класс FormData.
В форме у меня есть несколько полей, включая один файл. Я добавил все поля в данные формы и использую метод post HttpClient для загрузки данных.
saveMakerDetails(data:FormData){
return this.http.post(`${env.base_url}/web/maker`,data,{headers:new HttpHeaders({"Content-Type":"multipart/form-data"})});
}
А ниже приведен мой код для подготовки FormData.
onSubmit(){
let formData = new FormData();
let data = {}
for(let obj of Object.keys(this.profileForm.value)){
if(obj == 'image'){
formData.append("file",this.profileForm.value[obj]);
} else {
data[obj] = this.profileForm.value[obj];
}
}
formData.append("maker",JSON.stringify(data));
this.disableSave = true;
this.adminService.saveMakerDetails(formData)
.subscribe(res=>{
this.disableSave = false;
},err=>{
this.disableSave = false;
})
}
Проблема заключается в том, что при попытке загрузить сервер сообщает, что текущий запрос не является составным.
Я пытался установить различные методы для настройки заголовка в angular service, но ни один из них не работает нормально.
Вот мой ответ
{timestamp: "2019-04-24T07:55:10.894+0000", status: 500, error: "Internal Server Error",…}
error: "Internal Server Error"
message: "Current request is not a multipart request"
path: "/v1/web/maker"
status: 500
timestamp: "2019-04-24T07:55:10.894+0000"}
Кажется, что angular не может установить Content-Type.
Ниже приведен заголовок запроса, скопированный браузером формы.
Accept: application/json, text/plain, */*
accessToken: eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI1YzlhM2RhODRiODJjNjM5OTc0Y2QyNWIiLCJpYXQiOjE1NTM4ODc5ODEsInN1YiI6ImNsaWVudCIsImlzcyI6ImlkZW1pYSJ9.r2Jh6PdXi3Ja8-UomFUJ7eGk2GXJhA4OqiYhQjcsFs8
Content-Type: application/json
Origin: http://localhost:8080
Referer: http://localhost:8080/
requestId: 1234
trackingId: 56565
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
please guide me what should i do.
Thanks In advance.