如何在Slack中保存用户上传的文件
How to save file uploaded by user in Slack
我正在使用 Slack Bolt Python SDK 来收集用户上传的文件。当用户将文件上传到 slack bot 应用程序时,bot 将识别该事件并且接收到的正文是这样的:
{'token': 'xxxxxxxxxxxx',
'team_id': 'Ttttttttt',
'enterprise_id': 'Eeeeee',
'api_app_id': 'Aaaaaaaa',
'event': {'type': 'message',
'text': '',
'files': [{'id': 'Fffffff',
......
'mode': 'snippet',
'is_external': False,
'external_type': '',
'is_public': False,
'public_url_shared': False,
'display_as_bot': False, 'username': '',
'url_private': 'https://url/file.xlsx',
'url_private_download': 'https://url2/file.xlsx',
'permalink': 'https://url3/file.xlsx',
'permalink_public': 'https://url3',
......
根据返回值,如何获取文件并保存?我试过
file_path = body['event']['files'][0]['url_private_download']
urllib.request.urlretrieve (file_path, "./temple.xlsx")
但是保存的文件不是xlsx格式而是html格式。谁能告诉我如何正确保存文件?提前致谢。
您应该在请求下载文件时提供授权header:
Authorization: Bearer A_VALID_TOKEN
A_VALID_TOKEN 是一个 OAuth 令牌,具有 files.read
范围。
您可以在这里阅读更多内容:https://api.slack.com/types/file#auth
您收到的 html 文件似乎只是 Slack 在未提供授权令牌时的默认响应。
我正在使用 Slack Bolt Python SDK 来收集用户上传的文件。当用户将文件上传到 slack bot 应用程序时,bot 将识别该事件并且接收到的正文是这样的:
{'token': 'xxxxxxxxxxxx',
'team_id': 'Ttttttttt',
'enterprise_id': 'Eeeeee',
'api_app_id': 'Aaaaaaaa',
'event': {'type': 'message',
'text': '',
'files': [{'id': 'Fffffff',
......
'mode': 'snippet',
'is_external': False,
'external_type': '',
'is_public': False,
'public_url_shared': False,
'display_as_bot': False, 'username': '',
'url_private': 'https://url/file.xlsx',
'url_private_download': 'https://url2/file.xlsx',
'permalink': 'https://url3/file.xlsx',
'permalink_public': 'https://url3',
......
根据返回值,如何获取文件并保存?我试过
file_path = body['event']['files'][0]['url_private_download']
urllib.request.urlretrieve (file_path, "./temple.xlsx")
但是保存的文件不是xlsx格式而是html格式。谁能告诉我如何正确保存文件?提前致谢。
您应该在请求下载文件时提供授权header:
Authorization: Bearer A_VALID_TOKEN
A_VALID_TOKEN 是一个 OAuth 令牌,具有 files.read
范围。
您可以在这里阅读更多内容:https://api.slack.com/types/file#auth
您收到的 html 文件似乎只是 Slack 在未提供授权令牌时的默认响应。