0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Slack File Upload

Posted at

PythonでSlackにファイルをアップロードする方法

WebClient#files_upload_v2()を使わずに画像をアップロードしたい場合の方法です。

slackFileUpload.py
import pathlib
import requests
from slack_sdk import WebClient

file_id_list = list()
slack_file_list = list()

channel_ID = "XXXXXXXXXXX"
client = WebClient(token="xoxb-XXX")

# ファイルが置かれたディレクトリパス
file_path = pathlib.Path("d:/test_directory/")

# ここではPNGファイルのみを対象に
for file in file_path.glob("*.png"):
    # files_getUploadURLExternalでファイルID、アップロードURLを取得
    # ファイル名、ファイルサイズが必要
    res = client.files_getUploadURLExternal(
        filename = file.name,
        length = file.stat().st_size,
    )
    # ファイルIDリストに追加
    file_id_list.append(
        {"id": res["file_id"], "title": file.name}
    )
    # アップロードURLに対してファイルアップロード(バイナリ読み込み)
    filedata = {"file": open(str(file), "rb")}
    res = requests.post(res["upload_url"], files=filedata)

# ファイルアップロードが成功していれば処理を続ける(本当はファイルごとに確認が必要)
if res.ok:
    # ファイルIDリストを渡してアップロード確認(複数ファイル可)
    res = client.files_completeUploadExternal(
        files = file_id_list
    )
    for r in res["files"]:
        slack_file_list.append("<" + r["permalink"] + "|" + r["name"] + ">")
    # メッセージをポスト
    ret = client.chat_postMessage(
        channel = channel_ID,
        text = "".join(slack_file_list)
    )
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?