簡體   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