Загрузка файла FormData вместе с другими параметрами формданных - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь загрузить файл вместе с некоторыми данными формы.Команда 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.Где я делаю ошибку?Заранее спасибо!

...