a94*_*a94 5 base64 node.js slack-api
此时,在我的代码中,我有一个img包含 Base-64 编码图像的变量。我通过记录输出img并将其粘贴到代码美化 Base-64 图像编码器中来确认 Base-64 图像是正确的。
现在,我正在尝试弄清楚如何 POST 到 Slack API。我已阅读 Slack 的 files.upload 方法 API 文档,其中表示它们接受多部分表单数据或 application/x-www-form-urlencoded,但我不知道如何从 Base-64 转换为其中任何一个节点.js。完成转换后,我也不知道如何使用 request.post 制作实际的帖子,因为我不清楚如何对 slack 请求的相关信息进行编码。
目前,我正在尝试这样的事情:
request.post({ url: 'https://slack.com/api/files.upload',
formData: {
token: slackToken,
tile: "Image",
filename: "image.png",
filetype: "auto",
channels: "testing",
file: img,
},
}, function (err, response) {
// just for debugging
console.log(JSON.parse(response.body));
});
Run Code Online (Sandbox Code Playgroud)
获取响应:
{ ok: false, error: 'no_file_data' },这是有道理的,因为 Slack 不接受 base-64 编码img
非常感谢任何帮助!
首先,我们需要修剪 base64 编码(如果它以以下内容开头):data:image/png;base64,
现在文件系统可以帮助我们转换为文件writeFileSync,它接受文件的base64编码并将文件写入系统。我想找到一种方法来做到这一点,而不会产生将文件写入系统的副作用,但目前还无法做到。
准备就绪后,我们可以使用新创建文件的路径作为参数来发出 slack post 请求file。工作代码如下:
let imgAsBase64 = img.substring(img.indexOf(',') + 1);
require('fs').writeFileSync('image.png', imgAsBase64, 'base64', (err) => {
console.log(err);
});
await request.post(
{
url: 'https://slack.com/api/files.upload',
formData: {
token: slackToken,
tile: 'Image',
filename: 'image.png',
filetype: 'auto',
channels: msg.channel,
file: require('fs').createReadStream('./image.png')
}
},
function (err, response) {
// just for debugging
console.log(response.body);
}
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8222 次 |
| 最近记录: |