Slack API 将字符串上传为文件
Slack API upload string as file
我有一个 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);
}
此代码 returns:error: 'no_file_data',
将内容更改为文件给出相同的响应。
我需要做什么才能将 csv 字符串转换为可以上传的文件?我无法使用 fs 写出文件。
我曾尝试使用 fs.createReadStream(csvData),但这需要一个文件,而不是字符串。
Slack API 文档:https://api.slack.com/methods/files.upload
您不需要将 CSV 文件转换成文件,看来您在这里遗漏了几件事:
- fileType属性,需要CSV.
- Slack 文件上传 API 支持 multipart/form-data 和
application/x-www-form-urlencoded 内容类型。
你错过了 Content-Type.
查看一个工作示例,了解如何使用 application/x-www-form-urlencoded
发送数据
Send a CSV to Slack
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}!` };
我有一个 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);
}
此代码 returns:error: 'no_file_data',
将内容更改为文件给出相同的响应。
我需要做什么才能将 csv 字符串转换为可以上传的文件?我无法使用 fs 写出文件。
我曾尝试使用 fs.createReadStream(csvData),但这需要一个文件,而不是字符串。
Slack API 文档:https://api.slack.com/methods/files.upload
您不需要将 CSV 文件转换成文件,看来您在这里遗漏了几件事:
- fileType属性,需要CSV.
- Slack 文件上传 API 支持 multipart/form-data 和 application/x-www-form-urlencoded 内容类型。 你错过了 Content-Type.
查看一个工作示例,了解如何使用 application/x-www-form-urlencoded
发送数据Send a CSV to Slack | 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}!` };