Azure函数生成的HTML文件无法加载matplotlib保存的图片问题求助
故障根因
- Azure函数运行环境的临时文件目录不属于可公开访问的静态资源路由范围,你通过
plt.savefig存在临时路径下的图片,客户端浏览器无法通过相对路径直接访问,本地运行时没有访问限制所以可以正常加载,部署后自然失效。 - 你写的
../{basepath}/plot.png是相对于客户端请求的函数端点的相对路径,和你后端代码的本地文件结构没有对应关系,即便页面元素里显示的路径看起来符合你本地的结构,实际也无法匹配到后端的存储位置。
解决方案
方案1:Base64内嵌(最稳定,无需额外存储)
直接将matplotlib生成的图片转成Base64字符串内嵌到HTML中,无需保存到本地临时文件,完全规避路径匹配问题:
import base64 from io import BytesIO # 原有绘图逻辑保持不变 # 替换plt.savefig到本地的逻辑 img_buf = BytesIO() plt.savefig(img_buf, format='png') img_buf.seek(0) img_base64 = base64.b64encode(img_buf.read()).decode('utf-8') img_buf.close() # 构造HTML的img标签 html_img = f'<div class="image"><img src="data:image/png;base64,{img_base64}"></div>'
方案2:外部存储挂载
如果需要保留图片文件,可将生成的图片上传到Azure存储账户的Blob容器,配置Blob的公共读权限后,将Blob的访问URL填入img标签的src属性即可。
内容的提问来源于stack exchange,提问作者rahul knair
相关产品推荐
相关产品推荐

