node.js - 如何使用 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);
});
}
解决方案
推荐阅读
- pdf - 在 Adobe Acrobat Javascript 中,如何在脚本的某个部分作用于页面之前强制页面变为“可编辑”?
- python - 使用 Seaborn 绘制计算数据的联合图
- sql - CASE WHEN 来自没有子查询的嵌套 CASE WHEN?
- java - 在命令行中编译 Intellij-Project
- javascript - “浏览器”的区别。和“信使”。使用 webextension/javascript API 时
- python - 如何防止嵌套列表被 Python 的 csv.reader 解析为字符串?
- python - Flask - 回传内部请求的响应
- python-3.x - 检查networkx中两个节点之间图的长度(权重)的功能是什么?
- python - 从列表中删除所有实例
- jenkins - 如何在 Jenkins Pipeline 中引用 Maps 变量的映射