EDITEDнатяжной API (files.upload) с помощью NodeJS
Я пытаюсь структурировать files.upload() API обеспеченные через Слэк но я с трудом понять правильный формат. На данный момент я могу использовать API для загрузки текстового файла, но не могу на всю жизнь выяснить, как загрузить изображение.
Вот моя проблема: у меня есть изображение на моем сервере разработки, назовем его image.png. Я хочу использовать API files.upload(), чтобы отправить это изображение в канал #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», который натяжные details as: "Метод передан аргумент массива PHP-типа (например, с именем, подобным foo [7]). Это никогда не действует с помощью Slack API."
Я не совсем уверен, что делать с этой ошибкой, поскольку я не использую PHP, ни что-нибудь, что я могу определить, что будет похоже на PHP.
Я экспериментировал с несколькими различными подходами для включения пути к файлу, используя модуль «fs», сохраняя его в переменной или просто ссылаясь на его абсолютный путь (и даже относительный путь). Я немного потерян, и я просто ищу руководство.
Я понимаю, что этот конкретный API использует multipart/form-data, но у меня нет формы. Это приложение - это приложение NodeJS. Нет рамки (например, Express), работающей в тандеме с главным скриптом узла.
Любая помощь действительно ценится. Опять же, просто ищем информацию о том, что мне не хватает или что-то не так.
Заранее благодарен!
Не мог бы вы рассказать нам, что 'bot.api' это? Я просто догадываюсь, основываясь на именах переменных, но, возможно, вы используете [botkit] (https://github.com/howdyai/botkit)? – smarx
Если это действительно botkit, я думаю, что 'file: fs.createReadStream (" путь/to/image/file ")' может сделать трюк. (Botkit использует [request] (https://github.com/request/request), который обрабатывает 'multipart/form-data' через [form-data] (https://github.com/form-data/form- данные)). – smarx
Я использую botkit! Я попробую это, спасибо за предложение! – dannyk