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

Flask Web应用如何实现文件夹内所有图片的网页展示

实现方案

不需要额外装第三方库,Flask原生能力就能实现,分两步改代码就行。

第一步:调整flaskapp.py里的images路由

模板本身不能直接读取服务器本地的文件,你需要在路由层先遍历static/photos下的所有jpg文件,把文件名列表传给模板再渲染。
参考代码如下,你原来写的index路由直接保留就行:

from flask import Flask, render_template
import os

app = Flask(__name__)

# 原有index路由不用动
@app.route('/')
def index():
    return render_template('index.html')

@app.route('/images')
def show_images():
    # 拼接photos文件夹的绝对路径,避免相对路径在不同运行环境下报错
    photo_folder = os.path.join(app.static_folder, 'photos')
    valid_photos = []
    for fname in os.listdir(photo_folder):
        # 过滤掉子文件夹,只留.jpg/.JPG格式的文件
        file_full_path = os.path.join(photo_folder, fname)
        if os.path.isfile(file_full_path) and fname.lower().endswith('.jpg'):
            valid_photos.append(fname)
    # 把筛选好的图片名列表传给模板
    return render_template('images.html', photo_list=valid_photos)

if __name__ == '__main__':
    app.run(debug=True)

注意:上面的后缀判断已经兼容了大写.JPG的情况,不用额外加判断逻辑。

第二步:修改images.html模板

用Jinja2自带的for循环遍历传入的图片列表,生成对应img标签就行,推荐用url_for生成静态文件地址,比硬写路径兼容性好。
参考模板代码:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>图片展示</title>
    <style>
        /* 加个基础样式,避免原图太大撑破页面 */
        .img-card {
            max-width: 280px;
            margin: 8px;
            border-radius: 6px;
            box-shadow: 0 1px 3px #ccc;
        }
        .img-container {
            display: flex;
            flex-wrap: wrap;
            padding: 16px;
        }
    </style>
</head>
<body>
    <h2>所有图片</h2>
    <div class="img-container">
        {% for photo in photo_list %}
        <img 
            src="{{ url_for('static', filename='photos/' + photo) }}" 
            alt="{{ photo }}"
            class="img-card"
        >
        {% endfor %}
    </div>
</body>
</html>

新手容易踩的坑

  • 文件夹结构别放错:flaskapp.py同级必须有templates文件夹(存两个html文件)、static文件夹,photos子文件夹必须放在static下面,放错位置会直接404找不到文件。
  • 如果个别图片加载失败,先检查文件名有没有中文、特殊符号或者空格,初期测试尽量用纯英文数字命名,避免路径转义问题。
  • 几百张图片一次性加载会稍慢,等基础功能跑通之后,你再按需加图片懒加载、分页功能优化体验就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:27:18