В настоящее время у меня есть форма, в которую пользователи загружают данные, включая файл MP3. Подробности хранятся в базе данных MySQL, а файл MP3 хранится в папке моего сервера /orgs/user/uploads (URL domain.com/orgs/user/uploads), а имя файла MP3 хранится в базе данных.
Я пытаюсь вывести его с помощью приведенного ниже сценария, и, похоже, функция аудиоплеера работает нормально, однако, хоть убей, не могу понять, как вызвать в нем местоположение файла с сервера, поэтому в настоящее время он отображает аудио управление без звука.
if ($row ['approved'] == "1" && $row ['service'] == "Army" )
{
echo "<div class='speech-bubble'>";
echo "<p> <strong>" . $row['first_name'] . ' ' . $row['initial'] . "</strong></p>"; // Replace 'column_name' with the actual column name from your table
echo "<p>" . $row['service'] . "</p>";
echo "<p>" . $row['year'] . "</p>";
echo "<p>" . $row['story_text'] . "</p>";
echo '<audio controls>';
echo '<source src = "data:audio/mp3;base64,'.base64_encode($row['name']).'">';
echo '</audio>';
Размещены разные версии пути и URL-адреса сервера в разделе «script src».
Большое спасибо за вклад. Я рассмотрю команды file_get_contents
Вы уверены, что эта проблема связана с самим MySQL? Кроме того, имейте в виду, что вам следует экранировать содержимое, хранящееся в вашей базе данных, при его повторении, чтобы избежать внедрения HTML в вашу разметку.
Вы действительно спрашиваете, как создать действительный URL-адрес для местоположения mp3-файла?
Аудиофайлы могут быть большими, а mp3 — это формат с потерями, специально разработанный для максимально возможного сжатия файлов. Если вы закодируете его как Base64 (обычный текст), вы как бы лишитесь цели, а если вы встроите его в HTML-документ, вы рано или поздно приведете к сбою чьего-то браузера.






вам нужно сначала получить содержимое файла, а затем использовать его. также вы можете проверить, существует ли файл, если вы сохранили только имя файла в таблице
$folder= "/orgs/user/uploads/"; // upload folder
if ($row ['approved'] == "1" && $row ['service'] == "Army" ){
if (file_exists($folder.$row['name']) ){ // check for file
$file = file_get_contents($folder.$row['name']); // get file contents
echo "<div class='speech-bubble'>";
echo "<p> <strong>" . $row['first_name'] . ' ' . $row['initial'] . "</strong></p>"; // Replace 'column_name' with the actual column name from your table
echo "<p>" . $row['service'] . "</p>";
echo "<p>" . $row['year'] . "</p>";
echo "<p>" . $row['story_text'] . "</p>";
echo '<audio controls>';
echo '<source src = "data:audio/mp3;base64,'.base64_encode($file).'">';
echo '</audio>';
} // if file
}// if approved
вы можете напрямую вызвать файл по URL-адресу, как показано ниже, при условии, что вы сохранили только имя файла в таблице
$url = "https://example.com/orgs/user/uploads/";
$folder= "/orgs/user/uploads/"; // upload folder
if ($row ['approved'] == "1" && $row ['service'] == "Army" ){
if (file_exists($folder.$row['name']) ){ // check for file
echo "<div class='speech-bubble'>";
echo "<p> <strong>" . $row['first_name'] . ' ' . $row['initial'] . "</strong></p>"; // Replace 'column_name' with the actual column name from your table
echo "<p>" . $row['service'] . "</p>";
echo "<p>" . $row['year'] . "</p>";
echo "<p>" . $row['story_text'] . "</p>";
echo '<audio controls>';
echo '<source src = "'.$url.$row['name'].'">';
echo '</audio>';
} // if file
}// if approved
Если
MP3 file is stored in my server folder, тоbase64_encode($row['name'])— это не то, что вам нужно. Вы будете кодировать имя, а не двоичные данные. Вам нужно будет сделатьfile_get_contents, я думаю... Вам также не нуженechoв каждой строке. Вы можете объединить строки или расширить строки.