我有一個 csv 的變數。我想將它作為 .csv 檔案而不是文本上傳到松弛頻道。
async function run() {
const csvData = 'foo,bar,baz';
const url = 'https://slack.com/api/files.upload';
const res = await axios.post(url, {
channel: '#csvchannel',
filename: 'CSVTest.csv',
content: csvData
}, { headers: { authorization: `Bearer ${slackToken}` } });
console.log('Done', res.data);
}
此代碼回傳:error: 'no_file_data',將內容更改為檔案會給出相同的回應。
我需要做什么才能將 csv 字串轉換為可以上傳的檔案?我不能使用 fs 寫出檔案。
我曾嘗試使用 fs.createReadStream(csvData) 但這需要一個檔案,而不是一個字串。
Slack API 檔案:https ://api.slack.com/methods/files.upload
uj5u.com熱心網友回復:
您不需要將 CSV 轉換為檔案,似乎您在這里遺漏了幾件事:
- fileType屬性,它需要是CSV。
- Slack 檔案上傳 API 支持multipart/form-data和 application/x-www-form-urlencoded內容型別。您缺少內容型別。
查看如何使用application/x-www-form-urlencoded發送資料的作業示例
| 向 Slack 發送 CSV | View in Fusebit |
|---|
const csvData = 'foo,bar,baz';
const url = 'https://slack.com/api/files.upload';
const params = new URLSearchParams()
params.append('channels', slackUserId);
params.append('content', csvData);
params.append('title', 'CSVTest');
params.append('filetype', 'csv');
const result = await axios.post(url, params,
{
headers:
{
authorization: `Bearer ${access_token}`,
'Content-Type': 'application/x-www-form-urlencoded'
}
});
ctx.body = { message: `Successfully sent a CSV file to Slack user ${slackUserId}!` };
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/426774.html
標籤:javascript 节点.js 邮政 axios 松弛
