【Python程序开发系列】搭建一个简单的HTTP服务将本地文件通过HTTP提供访问(案例+源码)
这是我的第454篇原创文章。
一、引言
使用 Python 的 Flask 框架可以快速搭建一个简单的 HTTP 服务(web服务器),将本地的 .wav 音频文件(静态资源)通过 HTTP 提供访问。
二、实现过程
2.1 安装 Flask
pip install flask
2.2 创建 Flask 应用
创建一个 Python 文件(例如 app.py)

app.py:
from flask import Flask, send_from_directory
import os
app = Flask(__name__)
# 设置音频文件存储的目录
AUDIO_FOLDER = 'audio_files'
# 确保音频文件目录存在
if not os.path.exists(AUDIO_FOLDER):
os.makedirs(AUDIO_FOLDER)
@app.route('/audio/<filename>')
def serve_audio(filename):
"""
提供音频文件的下载或播放
"""
try:
# 检查文件是否存在
if os.path.exists(os.path.join(AUDIO_FOLDER, filename)):
# 返回音频文件
return send_from_directory(AUDIO_FOLDER, filename)
else:
return "File not found", 404
except Exception as e:
return str(e), 500
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
当用户请求 /audio/<filename> 路径时,Flask 会检查 AUDIO_FOLDER 目录下是否存在该文件,如果存在则将其发送给客户端(通常是浏览器或文件下载工具),以便用户可以播放或下载该音频文件。如果文件不存在,则返回“File not found”和404状态码。
浏览器请求服务器上的资源(如网页、音频文件等),服务器处理这些请求并返回相应的响应。在这个过程中,浏览器作为请求资源的一方,自然是客户端。而服务器(这里本地电脑就是后端服务器)作为提供资源的一方,是服务端。
2.3 将 .wav 文件放入指定目录
在与 app.py 同级目录下创建一个名为 audio_files 的文件夹,并将你的 .wav 音频文件放入其中。

2.4 运行 Flask 应用
在终端中运行以下命令启动 Flask 服务:
python app.py
默认情况下,Flask 服务会运行在 http://127.0.0.1:5000。
2.5 访问音频文件
通过浏览器或其他 HTTP 客户端访问以下 URL 来获取音频文件:http://127.0.0.1:5000/audio/your_audio_file.wav将 your_audio_file.wav 替换为你实际的音频文件名。


2.6 注意事项
要实现输入 URL 地址后自动触发下载,可以通过设置 HTTP 响应头来实现。当客户端(如浏览器)访问该 URL 时,服务器会返回一个带有特定响应头的响应,告诉浏览器这是一个需要下载的文件,而不是直接在浏览器中打开或播放。
from flask import Flask, send_from_directory, Response
import os
app = Flask(__name__)
# 设置音频文件存储的目录
AUDIO_FOLDER = 'audio_files'
# 确保音频文件目录存在
if not os.path.exists(AUDIO_FOLDER):
os.makedirs(AUDIO_FOLDER)
@app.route('/audio/<filename>')
def serve_audio(filename):
"""
提供音频文件的下载
"""
try:
# 检查文件是否存在
file_path = os.path.join(AUDIO_FOLDER, filename)
if os.path.exists(file_path):
# 设置响应头,触发浏览器下载
response = send_from_directory(AUDIO_FOLDER, filename, as_attachment=True)
response.headers['Content-Disposition'] = f'attachment; filename="{filename}"'
return response
else:
return "File not found", 404
except Exception as e:
return str(e), 500
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
部署到公网:如果你想让其他人也能访问你的音频文件,需要将 Flask 应用部署到公网服务器上。可以使用 Gunicorn 或 uWSGI 作为 WSGI 服务器来运行 Flask 应用,以提高性能和稳定性。可以通过 Nginx 或 Apache 作为反向代理,进一步优化性能和安全性。
跨域问题:如果你的音频文件需要被其他域名下的网页访问(例如在网页中嵌入音频播放器),可能会遇到跨域问题。可以通过设置 Flask 的 CORS(跨域资源共享)来解决。
作者简介:
读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。
更多推荐



所有评论(0)