[英]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.