angular 4- 如何将 POST 中的文件发送到后端

angular 4- How do I send file in POST to backend

我在表单中上传了一个文件。我需要创建 post 请求以使用此上传的文件和其他一些表单字段进行后端处理。

下面是我的代码:

      fileChange(event) {

        const fileList: FileList = event.target.files;
        if (fileList.length > 0) {
          this.file = fileList[0];
          this.form.get('file_upload').setValue(this.file);
        }
      }


      onClick(){

        const val = this.form.value;

             const testData = {
              'file_upload': this.file,
              'id': val.id,
              'name' : val.name,
              'code': val.code,
          };

        this.http.post('https://url', testData,
          .subscribe(
            response => {
              console.log(response);
            });
        }

除上传的文件外,每个字段值都被发送到后端。我如何将上传的文件连同表单字段一起发送到后端? 如果需要任何其他信息,请告诉我。

假设您在服务器上正确处理文件上传(通常是某种类型的 npm 包,如 multer 或 busboy),

您需要在 angular 端使用 npm 包来处理多部分表单数据。

ng-2-file-upload 是其中之一。

https://www.npmjs.com/package/ng2-file-upload

您正在尝试简单传递文件数据

'file_upload': this.file,

这是错误的

上传文件的方式有很多种,我喜欢用FormData,你的例子:

let testData:FormData = new FormData();
testData.append('file_upload', this.file, this.file.name);
this.http.post('https://url', testData).subscribe(response => {
    console.log(response);
});

此处有更多详细信息