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

Flask send_from_directory异常:WebP图片被强制作为附件下载

Flask WebP图片被强制下载的解决办法

问题核心:使用send_from_directory返回WebP格式图片时,即便as_attachment=False,浏览器仍会触发下载,其他图片格式可正常显示。

原因

Flask依赖Python的mimetypes模块自动推断文件的MIME类型,部分环境中默认未注册WebP的类型映射,导致返回的Content-Type为application/octet-stream——浏览器识别该类型为未知文件,进而触发下载行为。

解决方案

方案1:路由内手动指定MIME类型

针对WebP文件单独设置正确的MIME类型image/webp:

@bp.route("/<imagename>", methods=["GET"])
def get_image(imagename):
    if imagename.lower().endswith('.webp'):
        return send_from_directory(
            current_app.config["IMAGES_DIR"],
            imagename,
            as_attachment=False,
            mimetype='image/webp'
        )
    return send_from_directory(
        current_app.config["IMAGES_DIR"],
        imagename,
        as_attachment=False
    )

方案2:全局注册WebP的MIME类型

如果应用中有大量WebP图片,可在Flask应用初始化时全局添加类型映射,无需逐个路由处理:

from flask import Flask
import mimetypes

app = Flask(__name__)
# 注册WebP的MIME类型
mimetypes.add_type('image/webp', '.webp')

# 后续的路由注册等逻辑...

两种方案都能让浏览器正确识别WebP为图片类型,从而在页面内直接显示而非触发下载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 11:27:03