Python使用总结之Flask构建文件服务器,通过网络地址访问本地文件
在 Web 开发中,静态文件(如图片、CSS、JavaScript)的管理是基础且重要的环节。Flask 提供的 send_from_directory
函数为开发者提供了灵活的文件服务解决方案。本文将详细解析其原理、用法及最佳实践。
一、什么是 send_from_directory
?
send_from_directory
是 Flask 内置的辅助函数,用于从指定目录中安全地返回文件。与直接暴露文件路径相比,它通过以下特性提升安全性:
- 路径验证:自动过滤非法路径(如
../
),防止目录遍历攻击。 - MIME 类型检测:根据文件扩展名自动设置响应头。
- 缓存控制:支持设置
max-age
优化浏览器缓存。
二、基础用法示例
1. 简单文件服务
python">from flask import Flask, send_from_directoryapp = 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)
- 访问方式:<