繁体   English   中英

在NodeJS中使用multipart / form-data进行POST

[英]POST using multipart/form-data in NodeJS

实际上,我需要从我的NodeJS服务将本地映像发布到Cisco Webex机房。 对于本地文件,您需要执行multipart/form-data请求,而不是文档中提到的JSON。

CURL看起来像

curl --request POST \
  --header "Authorization: Bearer ACCESS_TOKEN" \
  --form "files=@/home/desktop/example.png;type=image/png" \
  --form "roomId=Y2lzY2....." \
  --form "text=example attached" \
  https://api.ciscospark.com/v1/messages

但是我不确定如何将其转换为nodeJS请求格式。 在这里尝试使用CURL到Node请求转换器但似乎不处理multipart/form-data类型。 请提出建议。

编辑:经过研究,我想出了以下代码

var request = require('request');
var fs = require('fs');

var params = { roomId: ROOMID,
    text: "hello....",
    files: {
       value: fs.createReadStream(PATH_WO_FILENAME),
       options: {
         filename: 'image.jpg',
         contentType: 'jpg'
       }
     }
   };
   var headersWebex = {
        'Authorization': 'Bearer MY_BOT_ACCESS_TOKEN',
       'Content-Type': 'multipart/form-data' }



request.post({
         headers: headersWebex,
         url:     'https://api.ciscospark.com/v1/messages',
         method: 'POST',
         body:  params
       }, function(error, response, body){
         console.log(body);
       });

但是它抛出错误

undefined
_http_outgoing.js:642
    throw new TypeError('First argument must be a string or Buffer');

好的,这就是我的工作方式。 我本质上需要更深入地研究@Evan提到的文档

var request = require('request');
var fs = require('fs');

var roomID = 'MY_ROOM_ID'
var params = {
  roomId: roomID,
  text: "hello....",
  files: {
    value: fs.createReadStream('./image.jpg'),
      options: {
      filename: 'image.jpg',
      contentType: 'image/jpg'
      }
    }
};

var headersWebex = {
  'Authorization': 'Bearer MY_BOT_ACCESS_TOKEN',
  'Content-Type': 'application/json'
}

request.post({
  headers: headersWebex,
  url: 'https://api.ciscospark.com/v1/messages',
  method: 'POST',
  formData: params
  }, function(error, response, body){
    if (error)
      console.log(error)

    console.log(body);
  });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM