首页 > 解决方案 > 如何使用 Angular 和 nodejs 将表单数据和文件发布到服务器?

问题描述

我有一个具有文件控件的表单,可以选择多个图像。我想将多个图像上传到服务器并将数据上传到数据库。我试过formData:

按下提交按钮时调用 postNewProduct(vlaue):

postNewProduct(value) {
  const formData = new FormData();
  const files: Array<File> = this.selectedFile;
  for(let i =0; i < files.length; i++){
    formData.append("uploads[]", files[i], files[i]['name']);
  }

  formData.append('productName', value.productName);
  formData.append('productCategory', value.productCategory);
  this.productService.postNewProduct(formData).subscribe(
   message => alert(message));
}

当表单控件选择图像时调用 onFileSelected(fileInput):

onFileSelected(fileInput){
  let images = fileInput.target.files.length;
  if(images < 1 || images > 4){
   alert("please select at image between 1 and 4");
  }else{
   this.selectedFile = <Array<File>>fileInput.target.files;
   console.log(this.selectedFile);
}
}

这是我在服务中调用 api 的函数:

postNewProduct(newProduct){
  return this.http.post(`/api/product/postproduct`, newProduct);
}

这是我在节点后端的功能,但 request.body 和文件中没有任何内容

exports.postProduct = function(request, response) {
  console.log(request.body);
  console.log(request.files);
  productModel.postProduct(request, (message, lastID) => {
    response.json(message, lastID);
  });
}

标签: node.jsangularexpress

解决方案


推荐阅读