这是我的第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、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐