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

Plotly-Dash使用dcc.Graph展示上传图片时出现FileNotFoundError如何解决

报错原因

dcc.Upload组件返回的contents参数不是本地文件路径,是符合data:[<mediatype>][;base64],<data>格式的Base64编码字符串,你直接将该字符串传入Image.open()时,PIL会将其识别为本地文件路径读取,自然触发文件不存在的报错。

修复方案

需要先对contents字符串做拆分解码,转换为字节流后再交给PIL处理,修改步骤如下:

  1. 新增两个依赖导入:
import base64
from io import BytesIO
  1. 修改parse_contents函数的图片读取逻辑:
def parse_contents(contents, filename, date):
    # 拆分content,提取base64编码部分
    content_type, content_string = contents.split(',')
    # 解码为字节流
    decoded = base64.b64decode(content_string)
    # 用BytesIO包装后传入PIL
    img = np.array(Image.open(BytesIO(decoded)))
    fig = px.imshow(img)
    return html.Div([
        html.H5(filename),
        html.H6(datetime.datetime.fromtimestamp(date)),
        dcc.Graph(figure=fig)
    ])

修改完成后重新运行代码即可正常上传图片并通过dcc.Graph展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:15:02