使用http请求发送空白图像将图像文件发送到slack

问题描述 投票:0回答:1

我正在尝试使用 Http 请求将图形发送到 slack 通道,但我只能看到一个空白 png。 如果我使用 slack WebClient 发送相同的图表,它会成功,但不使用 http 请求。

data_anomalies_trend_pd = data_anomalies_trend.toPandas()

plt.figure(figsize=(10, 6))
plt.plot(data_anomalies_trend_pd['date'], data_anomalies_trend_pd['visitors'], marker='o', linestyle='-', color='b')
plt.title('Visitor Trend Over Time')
plt.xlabel('Date')
plt.ylabel('Visitors')
plt.xticks(rotation=45)  # Rotate x-axis labels for better readability
plt.tight_layout()
plt.show()
plt.savefig("visitor_trend.png")

with open("visitor_trend.png", "rb") as image_file:
    payload = {
        'channels': channel_id,
        'filetype': 'png',
        'filename': 'visitor_trend.png',
        'title': 'visitor trend'
    }
    headers = {
        'Authorization': f'Bearer {slack_bot_token}'
    }

    response = requests.post(
        url='https://slack.com/api/files.upload',
        data=payload,
        headers=headers,
        files={'file': image_file}
    )

我需要使用http请求而不是WebClient,因为我对安装slack有要求。

python python-3.x slack
1个回答
0
投票

我只是将 png 改为 jpg 就可以了。

由于某种原因,WebClient 似乎可以使用 png,而 http 请求可以很好地使用 jpg

data_anomalies_trend_pd = data_anomalies_trend.toPandas()

plt.figure(figsize=(10, 6))
plt.plot(data_anomalies_trend_pd['date'], data_anomalies_trend_pd['visitors'], marker='o', linestyle='-', color='b')
plt.title('Visitor Trend Over Time')
plt.xlabel('Date')
plt.ylabel('Visitors')
plt.xticks(rotation=45)  # Rotate x-axis labels for better readability
plt.tight_layout()
plt.show()
plt.savefig("visitor_trend.jpg")

with open("visitor_trend.jpg", "rb") as image_file:
    payload = {
        'channels': channel_id,
        'filetype': 'jpg',
        'filename': 'visitor_trend.jpg',
        'title': 'visitor trend'
    }
    headers = {
        'Authorization': f'Bearer {slack_bot_token}'
    }

    response = requests.post(
        url='https://slack.com/api/files.upload',
        data=payload,
        headers=headers,
        files={'file': image_file}
    )
© www.soinside.com 2019 - 2024. All rights reserved.