我已经创建了一个 angular 前端应用程序,并使用 HTTP 服务方法将请求发送到服务器(包含 node.js 代码)。在前端,我创建了一个 csv 文件,该文件保存在角度组件的同一目录中。我想使用 HTTP 服务方法将文件发送到服务器(包含 node.js 代码)。我创建了以下代码:
客户端(前端)代码,在angular.js中开发:
uploadCSVFileOnServer(){
let file = new File([""], "./abc.csv"));
let formData = new FormData();
formData.append("userForm", file);
let userData = {
firstName : "ABC",
lastName : "DEF",
userFormData: formData
}
this.http.post('url', userData)
.subscribe(()=>{
console.log("File uploaded successfully");
})
}
现在,http.post()
方法将请求发送到getFile()
在服务器上运行的 node.js 中编写的方法 ( )。node.js代码(服务端代码)如下:
getFile(req, res){
let file = req.body.userData.userFormData ;
// PROBLEM: 'file' is an empty object here
}
我的疑问是,从客户端我发送了一个 javascript 对象,它也包含 FormData 对象(带有 key userFormData
)。但是当我尝试在服务器端的方法中获取FormData
对象时getFile()
,我得到一个空对象,该对象也不是类型FormData
。
问题是什么?是FormData.append()
在客户端不能正常工作?
该FormData
对象是一个奇特的对象,不能作为 JavaScript 对象的属性发布。
而是将 JSON 数据附加到 FormData 对象:
uploadCSVFileOnServer(){
let file = new Blob([""], {type: "application/csv"});
let formData = new FormData();
formData.append("csvFile", file, "abc.csv");
let userData = {
firstName : "ABC",
lastName : "DEF",
//userFormData: formData
}
formData.append("userData", JSON.stringify(userData));
this.http.post('url', formData)
.subscribe(()=>{
console.log("FormData uploaded successfully");
})
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句