【发布时间】:2016-06-28 19:12:23
【问题描述】:
已编辑
我正在尝试构建通过 Slack 提供的 files.upload() API,但我很难理解正确的格式。目前,我可以使用 API 上传文本文件,但我终生无法弄清楚如何上传图片。
这是我的问题:我的开发服务器上有一个图像,我们称之为 image.png。我想使用 files.upload() API 将该图像发布到#general Slack 频道。下面是我成功生成图像的代码,但目前只是发送文本:
var myBarChart = new Chart(ctx).Bar(barChartData, barChartOptions);
var myBarChartDataURL = leaderboardBarChart.toBase64Image();
canvas.toBuffer(function(err, buf) {
if (err) throw err;
fs.writeFile(__dirname + "/leaderboard.png", buf);
});
bot.api.files.upload({
token: process.env.token,
title: "Image",
filename: "image.png",
filetype: "auto",
//content: "Posted with files.upload API",
file: fs.createReadStream("path/to/image_file.png"),
channels: filtered[0].id
}, function(err, response) {
if (err) {
console.log("Error (files.upload) " + err);
} else {
console.log("Success (files.upload) " + response);
};
});
当我运行代码时,出现以下错误之一:
“invalid_array_arg”,其中 Slack 详细说明为:“该方法传递了一个 PHP 样式的数组参数(例如,名称类似于 foo[7])。这些对于 Slack API 永远无效。 "
我不完全确定这个错误是怎么回事,因为我没有使用 PHP,也没有使用任何我可以识别的类似 PHP 的东西。
我尝试了几种不同的方法来包含文件路径,无论是使用“fs”模块,将其存储在变量中,还是仅引用它的绝对路径(甚至是相对路径)。我有点迷茫,只是在寻找一些指导。
我了解此特定 API 使用 multipart/form-data 但我没有表单。这个应用程序严格来说是一个 NodeJS 应用程序。没有框架(如 Express)与主节点脚本协同工作。
非常感谢任何和所有帮助。再次,只是寻找一些关于我错过或做错了什么的见解/指导。
提前致谢!
【问题讨论】:
-
您能告诉我们
bot.api是什么吗?我只是根据变量名猜测,但也许你使用的是botkit? -
我正在使用botkit!我会试试看,谢谢你的建议!
-
当我这样做时,我不断收到错误消息“invalid_array_arg”。它与我生成图像的方式有什么关系吗? (见下文):canvas.toBuffer(function(err, buf) { if (err) throw err; fs.writeFile(__dirname + "/image.png", buf); });
-
你能用你当前的代码和你看到的错误的详细信息更新这个问题吗?