获取节点中的相同响应来自angular

时间:2016-02-17 06:35:50

标签: angularjs node.js

我在angularjs和nodejs中开发app。我想使用angular和node上传图像。图像是serten dusing multipart / form-data。当我发送数据后请求看起来像:

{name="customer.pen.13",  email="temp@temp.com",  website="http://www.tels-tra.com,image:FileList { 0=File,  length=1,  item=item()}}

我想在nodejs中获得相同的格式。但是我得到了节点js:

{name="customer.pen.13",  email="temp@temp.com",  website="http://www.tels-tra.com}

请求中缺少图片。

这是我的代码:

exports.updateExchangeSetup = function(req, res, next) {
    var request = require('request');
    console.log(req);
      console.log(req.body);
}
var headers = {
    'headers': {
        'User-Agent': 'Super Agent/0.0.1',
        'Authorization': 'test',
        'Access-Control-Allow-Methods': 'POST, GET, PUT, DELETE, OPTIONS',
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Headers": "Origin, X-Requested-With, Content-Type, Accept,Authorization",
        'Content-Type': 'application/json'
    }
}

2 个答案:

答案 0 :(得分:2)

根据您的代码片段的简短描述,我假设您在服务器端使用 expressJS ,请检查您在快递方面处理的内容类型。我认为它的应用程序/ JSON,它使你的应用程序禁用,以了解多部分表单数据。但是我需要更多关于nodeJs方面的细节来更好地回答。

答案 1 :(得分:0)

根据你的片段,一切看起来都不错。您是否将图像数据放在URL上?

"http://www.tels-tra.com,image:FileList { 0=File,  length=1,  item=item()}}"

如果这是一个字符串,那么它不应该被调节。

您可以尝试使用以下示例上传图片并发送其他参数,而不是您的代码段。也许这不是您正在寻找的确切解决方案,但如果您使用额外参数处理文件上传,它可能会让您知道。

在角度使用ngFileUpload上传文件

Upload.upload({
    url: "/api/enpoint/resources",
    data: {file: filePath, 'name': "customer.pen.13", 'email'="temp@temp.com"},
    headers: {/* your header object here */}
}).then(function (res) {
  // do something
  });

Node / ExpressJS路由器

使用connect-multiparty中间件拦截文件

var multipartyMiddleware = require('connect-multiparty')();
router.post('/api/enpoint/resources',multipartyMiddleware, ctrl.updateExchangeSetup);

Node / ExpressJS控制器

exports.updateExchangeSetup = function(req, res, next) {
    // files will be at: req.files
    var imageFile = req.files.file;
    var email = req.body.email
}