html - 从 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');
}
});
每当我提交表单时,服务器请求中都没有数据或对象数组
解决方案
永远不要使用表单数据数组,表单数据应该是一个带键的对象,类型是文本或文件
推荐阅读
- docker - 在 Docker Compose 上出现“ECONNREFUSED 0.0.0.0:5432”连接错误
- c++ - c++初始化二叉树节点
- twitter - 从 process_data 中的 tweet raw_data 打印 tweet full_text
- go - 为什么 runtime.Caller(0) 返回构建二进制文件的路径?
- ruby-on-rails - 如何将多个表与多个位置连接起来
- ios - ViewController 关闭后的辅助功能焦点顺序无意中转到第一个元素
- python - 在 Python 中读取 PostgreSQL 数组数据
- java - 过滤嵌套实体弹簧靴中的响应
- node.js - 我对 Firebase 托管和 AWS 有疑问
- git - 努力休息后无法推动 - 一切都是最新的