从 Slack 获取 PDF 文件 url 并在 Python 中转换为 base64
Get PDF file url from Slack and convert to base64 in Python
我有一个场景,用户将 PDF 上传到 Slack 机器人。我从 Slack 响应中获取 URL 并将其传递给 base64 编码器。编码器看起来像:
def convertPdfToBase64(url):
page = urllib.request.Request(url,headers={'User-Agent': 'Mozilla/5.0'})
encoded_string = base64.b64encode(urllib.request.urlopen(page).read()).decode("utf-8")
return encoded_string
当我将 URL 传递给 convertPdfToBase64() 时,它 returns 编码字符串作为 HTML 文档而不是 PDF。我什至尝试获取重定向的 URL 但没有成功。
松弛响应URL示例:https://files.slack.com/files-pri/T01ASGU49-F01BPN6GSFM/file__1_.pdf
从 requests.head() 重定向 URL: https://microsoft-rm67093.slack.com/?redir=%2Ffiles-pri%2FT01AU49-F01BPSFM%2Ffile__1_.pdf
r = requests.head('https://files.slack.com/files-pri/T01ASGU49-F01BPN6GSFM/file__1_.pdf', allow_redirects=True)
print(r.url)
但是,当我将最初从响应中获得的 URL 粘贴到浏览器中时,它会重定向到与我从 [=37= 获得的那个不同的 link ](),并将 URL 传递给 convertPdfToBase64() 后,我得到了正确的 base64 编码字符串。
浏览器重定向到: https://slack-files.com/files-pri-safe/T01ASG1PU49-F01BGSFM/file__1_.pdf?c=16014784-3a7c2a18cefbef
我在这里错过了什么?如何获取浏览器重定向的URL?
添加 page.add_header('Authorization', 'Bearer ' + 令牌) 有效。
我有一个场景,用户将 PDF 上传到 Slack 机器人。我从 Slack 响应中获取 URL 并将其传递给 base64 编码器。编码器看起来像:
def convertPdfToBase64(url):
page = urllib.request.Request(url,headers={'User-Agent': 'Mozilla/5.0'})
encoded_string = base64.b64encode(urllib.request.urlopen(page).read()).decode("utf-8")
return encoded_string
当我将 URL 传递给 convertPdfToBase64() 时,它 returns 编码字符串作为 HTML 文档而不是 PDF。我什至尝试获取重定向的 URL 但没有成功。
松弛响应URL示例:https://files.slack.com/files-pri/T01ASGU49-F01BPN6GSFM/file__1_.pdf
从 requests.head() 重定向 URL: https://microsoft-rm67093.slack.com/?redir=%2Ffiles-pri%2FT01AU49-F01BPSFM%2Ffile__1_.pdf
r = requests.head('https://files.slack.com/files-pri/T01ASGU49-F01BPN6GSFM/file__1_.pdf', allow_redirects=True)
print(r.url)
但是,当我将最初从响应中获得的 URL 粘贴到浏览器中时,它会重定向到与我从 [=37= 获得的那个不同的 link ](),并将 URL 传递给 convertPdfToBase64() 后,我得到了正确的 base64 编码字符串。
浏览器重定向到: https://slack-files.com/files-pri-safe/T01ASG1PU49-F01BGSFM/file__1_.pdf?c=16014784-3a7c2a18cefbef
我在这里错过了什么?如何获取浏览器重定向的URL?
添加 page.add_header('Authorization', 'Bearer ' + 令牌) 有效。