使用axios将图像上传到Slack

时间:2017-04-25 09:41:06

标签: javascript slack-api axios

我正在尝试使用松弛的api https://api.slack.com/methods/files.upload上传图片。

function uploadImage(file) {
    var form = new FormData();
    form.append('image', file);
    var self = this;
    const config = {
        headers: {
            'content-type': 'multipart/form-data'
        }
    }
    var token = 'myToken'
    axios.post('https://slack.com/api/files.upload?token=' + token, form, config)
        .then(function (response) {
            console.log(response);
            self.imageUploaded("Image uploaded")
        })
        .catch(function (error) {
            console.log(error);
            self.error(error);
        })
}

我收到“无效表单数据”的回复。知道可能出了什么问题吗?

谢谢和最诚挚的问候!

PS:我能用python

发布图片
def post_image(filename, token, channels):
    f = {'file': (filename, open(filename, 'rb'))}
    response = requests.post(url='https://slack.com/api/files.upload',
                             data={'token': token, 'channels': channels}, 
                             headers={'Accept': 'application/json'}, 
                             files=f)
    return response.tex

只需要用公理提出相同的请求

1 个答案:

答案 0 :(得分:0)

您可以使用带有表单数据库的 axios 上传文件

const fs = require("fs"); 
const axios = require("axios");
const FormData = require("form-data");


const form = new FormData();

form.append("token", 'token here');
form.append("channels", channelId);
form.append("file", fs.createReadStream(__dirname + "/aapl.png"), 'file name');

try {
  const res = await axios.post("https://slack.com/api/files.upload", form, {
    headers: form.getHeaders(),
  });
} catch (err) {
  throw new Error(err);
}