Python使用总结之Flask构建文件服务器,通过网络地址访问本地文件

时间:2025-03-20 11:08:14

Python使用总结之Flask构建文件服务器,通过网络地址访问本地文件

在 Web 开发中,静态文件(如图片、CSS、JavaScript)的管理是基础且重要的环节。Flask 提供的 send_from_directory 函数为开发者提供了灵活的文件服务解决方案。本文将详细解析其原理、用法及最佳实践。

一、什么是 send_from_directory

send_from_directory 是 Flask 内置的辅助函数,用于从指定目录中安全地返回文件。与直接暴露文件路径相比,它通过以下特性提升安全性:

  • 路径验证:自动过滤非法路径(如 ../),防止目录遍历攻击。
  • MIME 类型检测:根据文件扩展名自动设置响应头。
  • 缓存控制:支持设置 max-age 优化浏览器缓存。

二、基础用法示例

1. 简单文件服务

from flask import Flask, send_from_directory

app = Flask(__name__)

# 定义文件存储目录
UPLOAD_FOLDER = "/path/to/your/files"

@app.route("/files/<path:filename>")
def serve_file(filename):
    return send_from_directory(UPLOAD_FOLDER, filename)

if __name__ == "__main__":
    app.run(debug=True)
  • 访问方式:<