如何使用烧瓶提供PNG,以便它可以用作Slack中的附件?

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

我正在尝试发送一个PNG作为附件,但它没有出现在Slack中。我在POST方法中设置了正确的参数,但Slack拒绝使用我提供的图像。

我正在使用flask来提供静态文件:

@app.route('/data/<path:path>')
def send_png(path):
    response = make_response(send_file("data/" + path))
    return response

当我在浏览器中调用URL时,文件显示没有任何问题。当我将URL作为附件传递给slack时,文件不会显示。

当我传递imgur-image的URL时,会显示附件。

出于这个原因,我认为问题出在文件瓶文件的content-type / file-headers中。

我的文件头是:

HTTP/1.0 200 OK
Content-Length: 391777
Content-Type: image/png
Last-Modified: Fri, 02 Mar 2018 22:46:41 GMT
Cache-Control: public, max-age=43200
Expires: Sat, 03 Mar 2018 12:48:53 GMT
ETag: "1520030801.2465587-391777-4064615867"
Server: Werkzeug/0.11.11 Python/3.5.2
Date: Sat, 03 Mar 2018 00:48:53 GMT
Connection: keep-alive

我也可以验证,Slack确实请求我的附件(只是不显示它,如前所述):

[('User-Agent', 'Slackbot 1.0 (+https://api.slack.com/robots)'), ('X-Forwarded-For', '54.89.92.4'), ('Content-Type', ''), ('Accept-Encoding', 'gzip,deflate'), ('Accept', '*/*'), ('Host', 'XXXXXXXXXX'), ('Referer', 'https://slack.com'), ('Content-Length', ''), ('X-Forwarded-Proto', 'https')]
python python-3.x flask slack slack-api
1个回答
0
投票

怎么样:如果你想作为附件,图像应该在files=

import io
import requests
from PIL import Image


img = Image.open('picture.png')
im = io.BytesIO(img.file.read())
r = requests.post("127.0.0.1", data=im, timeout=5, files=im)
© www.soinside.com 2019 - 2024. All rights reserved.