如何在 Flask 应用中上传和查找音频文件并通过 URL 播放

在现代 Web 应用中,音频上传和播放功能广泛应用于教育、娱乐和社交平台。本文将介绍如何在 Flask 框架中实现音频文件的上传、存储以及通过 URL 播放音频文件的功能。

目录:
  1. Flask 简介
  2. 创建 Flask 应用
  3. 实现音频文件上传功能
  4. 存储音频文件
  5. 查找并获取音频文件
  6. 通过 URL 播放音频文件
  7. 结语

1. Flask 简介

Flask 是一个轻量级的 Python Web 框架,适合构建简单到中等复杂的 Web 应用。它以其简单的设计和灵活性著称,使开发者能够快速开发和扩展功能。

2. 创建 Flask 应用

首先,我们需要初始化一个 Flask 应用,并设置必要的配置。假设我们将音频文件存储在 static/audio/ 目录中。

python 复制代码
from flask import Flask, request, jsonify, send_from_directory
import os

app = Flask(__name__)

# 配置上传文件夹
app.config['UPLOAD_FOLDER'] = 'static/audio'

3. 实现音频文件上传功能

接下来,我们实现一个路由,用于处理音频文件的上传请求。上传的文件将被保存到 UPLOAD_FOLDER 指定的目录中。

python 复制代码
@app.route('/upload', methods=['POST'])
def upload_file():
    if 'file' not in request.files:
        return jsonify({"error": "No file part"}), 400
    
    file = request.files['file']
    
    if file.filename == '':
        return jsonify({"error": "No selected file"}), 400
    
    if file:
        filename = file.filename
        file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
        file.save(file_path)
        return jsonify({"message": "File uploaded successfully", "file_url": f"/uploads/{filename}"}), 201

4. 存储音频文件

上传的文件将被保存到服务器的 static/audio/ 目录下。Flask 的 request.files 对象用于处理文件上传,文件被保存后,我们返回一个 JSON 响应,其中包含音频文件的访问 URL。

5. 查找并获取音频文件

通过以下路由,我们可以从指定目录中查找并获取音频文件。send_from_directory 函数会从服务器指定目录中发送文件。

python 复制代码
@app.route('/uploads/<filename>')
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

6. 通过 URL 播放音频文件

音频文件上传成功后,我们得到了音频文件的访问 URL。通过这个 URL,前端应用可以使用 HTML 的 <audio> 标签播放音频。

html 复制代码
<audio controls>
  <source src="https://yourdomain.com/uploads/your_audio_file.wav" type="audio/wav">
  Your browser does not support the audio element.
</audio>

在这个例子中,src 属性设置为从 Flask 服务器获取音频文件的 URL,controls 属性提供了播放控制按钮。

7. 结语

通过本文的介绍,你应该了解了如何使用 Flask 实现音频文件的上传、存储及通过 URL 播放的功能。这种功能在很多应用场景中非常有用,比如在线教育平台、播客网站以及社交网络等。你可以根据需要扩展这些功能,例如添加文件格式校验、限制文件大小或者为音频文件生成唯一的文件名。

在实际开发中,确保文件上传的安全性和稳定性非常重要,比如防止上传恶意文件和处理大文件的上传。希望本文对你的开发工作有所帮助!

相关推荐
码云之上3 分钟前
项目团队从 5 人扩到 15 人,我写了个 CLI 让 IDE 共享 AI 规则
前端·人工智能·后端
掘金者阿豪5 分钟前
因为一条LEFT JOIN,差点把客户的数据搞丢了
后端
查不理6 分钟前
给 WorkBuddy 接入AI 音乐 MCP,让 Agent 真正生成音乐 demo
后端
可以飞的话19 分钟前
五、数据处理1
python
鱼毓屿御21 分钟前
Python 装饰器与函数调用机制(复习笔记 · 2026-07-07)
开发语言·python
山水洛行22 分钟前
Loop Engineering:4 种 AI Agent 循环,写好一个能顶你熬夜盯屏一整晚
后端
AC赳赳老秦40 分钟前
采购专员自动化:OpenClaw 自动比价、生成询价单、跟踪供应商报价进度实战指南
开发语言·数据库·人工智能·python·自动化·github·openclaw
ednO8nqdR1 小时前
Python小游戏制作:如何实现可配置的跨分辨率界面布局
python·plotly·django·virtualenv·scikit-learn·fastapi·pygame
小爷毛毛_卓寿杰1 小时前
我和 TRAE AI聊了聊,它帮我为五迷老师们做了个城市漫游小程序!
前端·人工智能·后端
林泽毅1 小时前
Qwen3.5 DPO 模型对齐实战(pytrio训练版)
人工智能·python·算法