Воспроизвести файл .MP3, расположенный в папке сервера, на эхо-выходе MySQL

В настоящее время у меня есть форма, в которую пользователи загружают данные, включая файл 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».

Если MP3 file is stored in my server folder, то base64_encode($row['name']) — это не то, что вам нужно. Вы будете кодировать имя, а не двоичные данные. Вам нужно будет сделать file_get_contents, я думаю... Вам также не нужен echo в каждой строке. Вы можете объединить строки или расширить строки.

user3783243 16.04.2024 04:57

Большое спасибо за вклад. Я рассмотрю команды file_get_contents

Michael Long 16.04.2024 05:07

Вы уверены, что эта проблема связана с самим MySQL? Кроме того, имейте в виду, что вам следует экранировать содержимое, хранящееся в вашей базе данных, при его повторении, чтобы избежать внедрения HTML в вашу разметку.

Nico Haase 16.04.2024 07:53

Вы действительно спрашиваете, как создать действительный URL-адрес для местоположения mp3-файла?

ADyson 16.04.2024 08:34

Аудиофайлы могут быть большими, а mp3 — это формат с потерями, специально разработанный для максимально возможного сжатия файлов. Если вы закодируете его как Base64 (обычный текст), вы как бы лишитесь цели, а если вы встроите его в HTML-документ, вы рано или поздно приведете к сбою чьего-то браузера.

Álvaro González 16.04.2024 08:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
5
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вам нужно сначала получить содержимое файла, а затем использовать его. также вы можете проверить, существует ли файл, если вы сохранили только имя файла в таблице

$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

Другие вопросы по теме