Php 为数据库中的每条记录创建WAV文件
我在数据库中有一个表,我将Php 为数据库中的每条记录创建WAV文件,php,mysql,wav,Php,Mysql,Wav,我在数据库中有一个表,我将wav文件存储在longblob列中。 我正在尝试创建一个文件夹,并在服务器上存储给定用户的所有wav。到目前为止,我拥有的是对数据库和表的查询,以及到目前为止只存储一个wav的简单示例。我对PHP不太熟悉,在这方面我需要一些帮助 $con=mysqli_connect("localhost","root","xxxx","testDB"); if (mysqli_connect_errno()) { echo "Failed to connect to My
wav
文件存储在longblob
列中。
我正在尝试创建一个文件夹,并在服务器上存储给定用户的所有wav
。到目前为止,我拥有的是对数据库和表的查询,以及到目前为止只存储一个wav
的简单示例。我对PHP不太熟悉,在这方面我需要一些帮助
$con=mysqli_connect("localhost","root","xxxx","testDB");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="SELECT recording FROM users WHERE accountID = '1234'";
$result=mysqli_query($con,$sql);
while ($result = mysqli_fetch_array($row)) {
$data = $result["recording"];
//mkdir('/var/spool/sounds/', 0755, true);
$wavFileName = "/var/spool/sounds/wavfile.wav";
$fh = fopen($wavFileName, 'w');
fwrite($fh, $data);
fclose($fh);
}
上面截取的部分正在该目录中创建一个wav
如果用户有5个保存的wav文件,如何创建名为
userID
和file1.wav
,file2.wav
的目录。。etc内部?带有以下代码,将起作用:
$account_id = 1234;
mkdir('/var/spool/sounds/'.$account_id, 0755, true);
$sql="SELECT recording FROM users WHERE accountID = ".$account_id ;
$result=mysqli_query($con,$sql);
$i=0;
while ($result = mysqli_fetch_array($row)) {
$i++;
$data = $result["recording"];
$wavFileName = "/var/spool/sounds/".$account_id."/file".$i.".wav";
$fh = fopen($wavFileName, 'w');
fwrite($fh, $data);
fclose($fh);
}
只需创建路径和文件名,将userid和已经创建的文件数连接起来。然后,检查该路径是否存在,否则创建它
$directory = "/var/spool/sounds/" . $userID;
$fileExtension = ".wav";
$fileNumber = 1;
while ($result = mysqli_fetch_array($row))
{
$data = $result["recording"];
if (!is_dir($directory))
mkdir($directory, 0755, true);
$wavFileName = $directory . "/file" . $fileNumber;
/*
* if you need to check if the file already exists,
* you can rename the new file "/var/spool/sounds/userId/file1_copy.wav"
* or "/var/spool/sounds/userId/file1_copy_copy.wav" if a copy already exists and so on.
*/
while (file_exists($wavFileName . $fileExtension))
$wavFileName .= "_copy";
$fh = fopen($wavFileName . $fileExtension, 'w');
fwrite($fh, $data);
fclose($fh);
$fileNumber++;
}
也许最好在while循环之外/之前创建用户文件夹?@Pierre如果由于某些原因,该文件夹在循环过程中被删除,该怎么办?谢谢您的帮助!只有一个问题。如果用户在其目录中保存了
file1.wav
,则该文件将从数据库中删除,然后以该名称将新文件保存到数据库中,会发生什么情况。这会覆盖目录中的文件,对吗?@Ivanov是的,会的