使用angular和sails.js中的文件发送formdata

时间:2018-06-05 06:28:18

标签: angular sails.js

我按照this教程执行文件上传,并尝试使用它发送表单数据 以下是filechange事件的代码

number

点击提交按钮后,代码会被执行

    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);
        }
    }

在服务器端,我只能使用req.file()获取文件,但是当我执行req.allParams()时,它没有数据。同时尝试console.log,formdata在angular app中给出了空结果。

修改 - >

如果我仅使用正文发出另一个帖子请求,那么我会得到数据。因此,这可能不是附加表单数据的正确方法。

    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);
    });

2 个答案:

答案 0 :(得分:0)

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);
        }
    }

你需要在这里发送一个blob。

答案 1 :(得分:0)

在将文件附加到formdata

之前,我必须附加文本参数
    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);
    });

这解决了这个问题。