php实现音频存储
PHP 实现音频存储的方法
文件上传处理
使用 PHP 处理音频文件上传,确保文件类型和大小符合要求。通过 $_FILES 超全局变量获取上传文件信息。
$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["audioFile"]["name"]);
$audioFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
// 检查文件类型
$allowedTypes = array("mp3", "wav", "ogg");
if (!in_array($audioFileType, $allowedTypes)) {
die("仅支持 MP3, WAV, OGG 格式");
}
// 检查文件大小(例如限制为 10MB)
if ($_FILES["audioFile"]["size"] > 10 * 1024 * 1024) {
die("文件大小超过 10MB 限制");
}
// 移动文件到目标目录
if (move_uploaded_file($_FILES["audioFile"]["tmp_name"], $targetFile)) {
echo "文件上传成功";
} else {
echo "文件上传失败";
}
数据库存储
将音频文件的元数据(如文件名、路径、大小等)存储到数据库中,便于管理和检索。

// 假设已建立数据库连接
$fileName = basename($_FILES["audioFile"]["name"]);
$filePath = $targetFile;
$fileSize = $_FILES["audioFile"]["size"];
$uploadDate = date("Y-m-d H:i:s");
$sql = "INSERT INTO audio_files (name, path, size, upload_date) VALUES (?, ?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ssis", $fileName, $filePath, $fileSize, $uploadDate);
$stmt->execute();
$stmt->close();
文件权限设置
确保上传目录有正确的写入权限,防止上传失败或安全问题。

// 检查目录是否存在,不存在则创建
if (!file_exists($targetDir)) {
mkdir($targetDir, 0755, true);
}
// 设置目录权限
chmod($targetDir, 0755);
安全性考虑
防止恶意文件上传和目录遍历攻击,对文件名进行过滤和处理。
// 过滤文件名中的特殊字符
$fileName = preg_replace("/[^a-zA-Z0-9\._-]/", "", $_FILES["audioFile"]["name"]);
$targetFile = $targetDir . uniqid() . "_" . $fileName;
音频文件处理
使用 PHP 扩展或第三方库处理音频文件,如获取音频时长、格式转换等。
// 例如使用 getID3 库获取音频信息
require_once 'getid3/getid3.php';
$getID3 = new getID3;
$fileInfo = $getID3->analyze($targetFile);
$duration = $fileInfo['playtime_string'];
echo "音频时长: " . $duration;






