Я пытаюсь загрузить изображение через Slack, используя node.js и пакет запроса, но не имея много удачи. Либо я получаю invalid_array_arg
или no_file_data
ошибки от API.
Вот мой запрос:
var options = { method: 'POST',
url: 'https://slack.com/api/files.upload',
headers:
{ 'cache-control': 'no-cache',
'content-type': 'application/x-www-form-urlencoded' },
form:
{ token: SLACK_TOKEN,
channels: SLACK_CHANNEL,
file: fs.createReadStream(filepath)
} };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
Я просмотрел несколько соответствующих сообщений:
- Могу ли я загрузить изображение как вложение с помощью Slack API?< /а>
- Slack API (files.upload) с использованием NodeJS
- исправить files.upload из буфера с параметрами formData #307
Единственное, что сработало, это прямое использование команды curl, но с использованием cygwin (ошибка командной строки: curl: (1) Protocol https not supported or disabled in libcurl
). Проблема с вызовом curl из узла (используя child_process
), но который молча терпит неудачу в командной строке и по-прежнему возвращает no_file_data
, используя cygwin (передавая абсолютный путь к файлу):
stdout: {"ok":false,"error":"no_file_data"}
stderr: % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 469 100 35 100 434 359 4461 --:--:-- --:--:-- --:--:-- 6112
Я использую узел v6.9.1 в Windows.
Что мне не хватает? Как я могу загрузить изображение в slack через node.js в Windows?
error: Response not OK: no_file_data Error: no_file_data
- person George Profenza   schedule 07.02.2018fs.createReadStream(filepath).stat()
? - person Peter   schedule 07.02.2018console.log(fs.createReadStream(filename).stat()); ^ TypeError: fs.createReadStream(...).stat is not a function
- person George Profenza   schedule 07.02.2018'close'
gm
. В вашем случае это может быть даже доступно слушателю, когда файл PDF завершит запись на диск. В качестве доказательства концепции вы можете попробовать взломатьsetTimeout
до 10 секунд или что-то в этом роде (если PDF-файл не велик), чтобы изолировать проблему и подтвердить, что это та же проблема. Если это так, в идеале вы должны удалить хакерскую задержку и использовать правильное событие. Извините за задержку с возвратом. - person George Profenza   schedule 19.09.2019