Я пытаюсь загрузить файл вместе с некоторыми данными формы.Команда curl в swagger выглядит так, как показано ниже, и она проходит без ошибок.
curl -X POST "https://<server>/credentials/k8s" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "kubeConfig=@k8s-config-file;type=" -F "name=aaaa"
Но когда я пытаюсь выполнить ту же операцию, используя angular, я получаю только name
параметр, а не kubeConfig
файл.Мой код выглядит так:
HTML:
<form #kubernetesCredentialForm="ngForm" (ngSubmit)="addKubernetesCredential(kubernetesCredentialForm.value);"
ngNativeValidate>
<section class="form-block">
<div class="form-group">
<label for="name">Name</label>
<input type="text" placeholder="Name" name="name" ngModel required>
</div>
<div class="form-group">
<label for="kubeConfig">Kube Config File</label>
<input type="file" placeholder="Kube Config File" name="kubeConfig" ngModel>
</div>
</section>
<button type="submit" class="btn btn-primary">ADD</button>
</form>
Компонент:
public addKubernetesCredential(credential) {
this.endpointService.addk8sCredential(credential).subscribe(
res => {
this.alertMessage = 'Credentials added successfully!';
}, err => {
this.alertMessage = 'Credentials was not added.';
});
}
Сервис:
public addk8sCredential(credential) {
let body = new FormData();
body.append("name", credential.name);
body.append("kubeConfig", credential.kubeConfig, "k8s-config-file");
return this.http.post('/credentials/k8s', body);
}
Мой бэкэнд-сервис:
@PostMapping(value = "/credentials/k8s", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String addCredentials(@RequestParam(name = "kubeConfig", required = false) MultipartFile kubeConfig, @RequestParam("name") String name){
}
Я получаю только параметр name
из данных формы, а не файл kubeConfig
.Где я делаю ошибку?Заранее спасибо!