我们如何使用 HTTP 请求方法将 CSV 文件从 Angular 应用程序传递到在服务器上运行的节点应用程序

辛哈·库沙格拉

我已经创建了一个 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章