You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用st.download_button下载PDF后无法打开的问题求助

问题原因与解决方法
  • 问题根源:你代码里的data参数传的是文件名字符串"MyDocumentSource.pdf",Streamlit会把这个字符串直接作为下载文件的内容,导致下载的文件本质是一段文本,而非真正的PDF二进制数据,所以系统无法识别为合法PDF。

  • 修正方案:需要先读取本地PDF文件的二进制内容,再将这个二进制数据传给data参数。

修正后的代码:

import streamlit as st

# 读取PDF文件的二进制内容
with open("MyDocumentSource.pdf", "rb") as f:
    pdf_data = f.read()

st.download_button(
    label="Download",
    key="download_button",
    on_click=None,
    file_name="MyDocument.pdf",
    data=pdf_data,
    help="Click to download.",
    mime="application/pdf"  # 可选:指定MIME类型,帮助浏览器正确识别文件类型
)

内容的提问来源于stack exchange,提问作者mrk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:02:03