Node.js http发布多个文件

时间:2017-02-15 16:03:41

标签: node.js

你好我试图将1个请求中的多个图像发布到webservice,但是webservice中的数组值只是最后一个。 这是我的代码:

   var request = require('request');
              console.log(images.length);
              request.post(
                  {
                      url: path_api, 
                      formData: {
                          user_id : username,
                          room_id : room_id,
                          filename : files[0].name,
                          origin_file : fs.createReadStream(path_origin_image),
                          attachments:["rizal1","rizal2"],
                          api_key :process.env.AWP_API_KEY 
                      }
                   }, function(err, res, body) {
                      console.log(err);
                      console.log(body);
                      callback(err,res,body);

                  }
              ); 

这是我在服务器上的输出帖子,很奇怪 output server 我想要这样的输出 desired output

感谢

2 个答案:

答案 0 :(得分:0)

@idhehold感谢你的答案就像一个魅力,这里是完整的解决方案

 var request = require('request');
          console.log(images.length);
          request.post(
              {
                  url: path_api, 
                  formData: {
                      user_id : username,
                      room_id : room_id,
                      filename : files[0].name,
                      origin_file : fs.createReadStream(path_origin_image),
                      "attachments[0]":"rizal1",
                      "attachments[1]":"rizal2",
                      api_key :process.env.AWP_API_KEY 
                  }
               }, function(err, res, body) {
                  console.log(err);
                  console.log(body);
                  callback(err,res,body);

              }
          ); 

答案 1 :(得分:0)

对于那些寻求使用请求以相同格式名称(例如files[])发送文件的人(这就是我最后提出这个问题的方式),可以通过修改forms()来实现。下一个刻度之前的对象。这使您可以处理多部分表单数据,还可以使用重复的键。

let req = request(`/path/to/data`, {
    headers: {
        'Content-Type': 'multipart/form-data'
    },
    formData: { }
}, (_err, resp, body) => {
    // handle the response
});

// the request actually gets sent at the next tick so we can still manipulate this
let form = req.form();
form.append('name', 'test');
form.append('files[]', Buffer.from('Hello world', 'utf-8'), {
    contentType: 'text/plain',
    filename: 'hello01.txt'
});
form.append('files[]', Buffer.from('Cheers', 'utf-8'), {
    contentType: 'text/plain',
    filename: 'world02.txt'
});

请注意,我遇到了从async函数调用此函数的问题,将函数修改为非异步可用。