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

如何无需本地保存即可使用send_file()发送folium地图?

解决方案:直接在内存中生成并发送folium地图

无需创建本地HTML文件,你可以利用folium的内置方法获取地图的HTML内容,再通过内存字节流直接发送,避免文件的创建与删除操作。具体实现步骤如下:

  • 导入Python标准库中的io模块,用于在内存中处理字节流
  • 通过my_map._repr_html_()方法直接获取地图的HTML字符串(该方法原本用于在Jupyter Notebook中渲染地图)
  • 将HTML字符串编码为字节流,存入BytesIO对象
  • 重置字节流的读取指针到起始位置,确保send_file能正确读取内容
  • 直接将内存中的字节流作为附件返回

替换后的代码

import io
from flask import send_file  # 假设你使用Flask框架

# 生成地图的原有逻辑保持不变...

# 直接获取HTML内容并转为内存字节流
map_html = my_map._repr_html_()
byte_stream = io.BytesIO(map_html.encode('utf-8'))
byte_stream.seek(0)  # 将指针移到流的开头

# 发送内存中的字节流作为附件
return send_file(
    byte_stream,
    as_attachment=True,
    download_name='map.html',  # 指定下载的文件名
    mimetype='text/html'
)

关键说明

  • _repr_html_():folium地图对象的内置方法,返回完整的地图HTML代码,无需写入本地文件
  • BytesIO:在内存中模拟文件对象,避免磁盘IO操作,提升效率
  • seek(0):写入字节流后,指针会停在末尾,必须重置到开头才能让send_file读取全部内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:52:02