首页 > 解决方案 > 从 new FormData() 创建新数组,然后使用 Angular HttpClient 发送到服务器

问题描述

我有这些对象数组,其中包含具有唯一字段的文件(图像)。提交后,使用 Angular HttpClient 将对象的 newArray 发送到服务器

// Old Arrray of Objects
let oldArray = [
        {
            "name": "macbook pro",
            "color": "white",
            "serialno": "s34345",
            "price": 1000,
            "description": "excellent for work",
            "image": "photo1.jpg",
            "image2": "photo2.png"
        },
        {
            "name": "hp pavilion 23",
            "color": "black",
            "serialno": "s767",
            "price": 2000,
            "description": "good speed",
            "image": "hp-photo1.jpg",
            "image2": "hp-photo2.png"
        }
    ];

声明变量并循环遍历旧的对象数组以附加到新的 FormData()

     // Declare an new Array
     let newArray: any[] = [];

     // Declare formData variable
      formData = new FormData();

    // Loop through old Array of objects

    for (let i = 0; i < oldArray.length; i++) {

      // get Individual object {} from array [{},{}]
      let formValue = oldArray[i];

      for (let key of Object.keys(formValue)) {
        const value = formValue[key];

        // Append key, values to formData()
        this.formData.append(key, value);
      }

      // Create/Push to newArray
      newArray.push(this.formData);
    }

使用 Angular HttpClient 发布到服务器

  // Post to server using Angular HttpClient

  this.productService.addProductsArray(newArray).pipe(first())
      .subscribe(
        (data: any) => {
          if (data) {
             alert('successful');
          }
      });

每当我提交表单时,服务器请求中都没有数据或对象数组

标签: htmlarraysangulartypescriptform-data

解决方案


永远不要使用表单数据数组,表单数据应该是一个带键的对象,类型是文本或文件


推荐阅读