Отправка форм-данных с файлом в angular и sails.js - PullRequest
0 голосов
/ 05 июня 2018

Я следовал этому учебнику для загрузки файла и пытался отправить данные формы вместе с ним. Ниже приведен код для события обмена файлами

    onFileChange(event) {
        let fileList: FileList = event.target.files;
        if (fileList.length > 0) {
            console.log("gettign file ...")
            let file: File = fileList[0];
            this.formData.append('photoupload', file, file.name);
        }
    }

При нажатии на кнопку Отправитькнопка ниже кода выполняется

    let body = JSON.stringify(this.personal);
    this.formData.append("personal", body);
    const headers = new HttpHeaders({
        'Authorization' : 'my-auth-token'
    });

    this.http.post('/api/fmng/create', this.formData, {
        headers: headers
    }).subscribe(data => {
        console.log(data);
    });

На стороне сервера я могу получить файл только с помощью req.file (), но когда я выполняю req.allParams (), в нем нет данных.Также попытка console.log для данных формы дает пустой результат в угловом приложении.

Редактировать ->

Если я сделаю еще один пост-запрос только с телом, я получу данные.Таким образом, это может быть неправильным способом добавления данных формы.

    this.http.post('/api/fmng/create', body, {
        headers: headers
    }).subscribe(data => {
        console.log(data);
    });

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Мне пришлось добавить параметры текста перед добавлением файла в данные формы

    let body = JSON.stringify(this.personal);
    this.formData.append("personal", body);
    this.formData.append('photoupload', this.file, this.file.name);
    const headers = new HttpHeaders({
        'Authorization' : 'my-auth-token'
    });

    this.http.post('/api/fmng/create', this.formData, {
        headers: headers
    }).subscribe(data => {
        console.log(data);
    });

Это решило проблему.

0 голосов
/ 05 июня 2018
onFileChange(event) {
        let fileList: FileList = event.target.files;
        if (fileList.length > 0) {
            console.log("gettign file ...")
            let file: File = fileList[0];
            const fileBlob= new Blob([file], { type: "<content-type>" });
            this.formData.append('photoupload', fileBlob);
        }
    }

Вам необходимо отправить сюда большой двоичный объект.

...