view source

JavaScript

//https://api.slack.com/methods/files.upload
//https://qiita.com/denzow/items/c85b673d93bb59405a73



const SLACK_TOKEN = 'xoxb-xxx-xxxx';
const SLACK_POST_URL = 'https://slack.com/api/files.upload';
var blob = '';



/*

channel でなく、channels に
formData を直接 ajaxのdataに
    contentType: false,
    processData: false,
が必要
*/
function submit(){
  var file = new File([blob], 'filename');

  var data = {
      'channels':['xxxx'],
      'text':'test...',
      'filename':'filename',
      'file' : file,
      'title':'title',
      initial_comment: '投稿時のコメント',
  };
  var formData = new FormData();
  for(let key in data){
      formData.append(key, data[key]);
  }
  var dataJson = JSON.stringify(data);
  console.log(dataJson);
  $.ajax({
      headers: {
        contentType: 'multipart/form-data',
        authorization: 'Bearer ' + SLACK_TOKEN
      },
    type: 'POST',
    contentType: 'multipart/form-data',
    url: SLACK_POST_URL,
    data: formData,
    contentType: false,
    processData: false,
    success: function (data) {
      console.log(data);
    },
    error: function(xhr,status,error){              
      console.log(xhr);           
      console.log("error: " + error);
    },
  });
}


//画像取得後に投稿処理を行う
fetch('slack_api_logo.png').then(function(response) {
  if(response.ok) {
    return response.blob();
  }
  throw new Error('Network response was not ok.');
}).then(function(myBlob) {
  blob = myBlob;
  submit();
});

CSS

HTML

ページのソースを表示 : Ctrl+U , DevTools : F12

view-source:https://hi0a.com/demo/-js/js-slack-api-token-file-upload/

ABOUT

hi0a.com 「ひまアプリ」は無料で遊べるミニゲームや便利ツールを公開しています。

プログラミング言語の動作デモやWEBデザイン、ソースコード、フロントエンド等の開発者のための技術を公開しています。

必要な機能の関数をコピペ利用したり勉強に活用できます。

プログラムの動作サンプル結果は画面上部に出力表示されています。

環境:最新のブラウザ GoogleChrome / Windows / Android / iPhone 等の端末で動作確認しています。

画像素材や音素材は半分自作でフリー素材配布サイトも利用しています。LINK参照。

動く便利なものが好きなだけで技術自体に興味はないのでコードは汚いです。

途中放置や実験状態、仕様変更、API廃止等で動かないページもあります。