Я бы хотел сделать это комментарием, а не ответом, но StackOverflow говорит, что моя репутация недостаточно высока.
Во-первых, я не согласен с @GetOffMyLawn
Если вы хотите, вы можете хранить файлы в mongodb. Mongodb может хранить любой файл, который вам нужен, вопрос только в том, как он будет храниться?
Я не очень разбираюсь в аудио, но я могу рассказать вам, как я выполнил этот точный сценарий для видеоданных, и я предположил бы, что он будет таким же или похожим для аудио.
Шаг 1 - преобразовать любой аудио / видео источник в URI данных.
Код выглядит примерно так:
function getEncodedVideoString($type, $file) {
return 'data:video/' . $type . ';base64,' .
base64_encode(file_get_contents($file));
}
Я скопировал это из (http://www.iandevlin.com/blog/2012/09/html5/html5-media-and-data-uri/)
)
Точная реализация зависит от того, откуда загружается видео. Это идет от клиента, это идет от вашего сервера, это загружается из внешнего источника? и т.п.
Но общий принцип тот же. Получите доступ к необработанным байтовым данным, а затем преобразуйте их в строку base64.
Далее, когда у вас есть данные URI, вы можете просто сохранить их в mongodb в виде текстовой строки. Имейте в виду, однако, что при кодировании в base64 размер файла будет примерно на 30% больше, поскольку вы кодируете байтовые данные в виде простого текста.
Если хотите, вы также можете хранить необработанные байтовые данные в mongodb, однако я не делал этого раньше, поэтому не могу точно сказать, как это работает.
Наконец, когда вам нужно извлечь аудиосэмпл, вы просто запрашиваете в базе данных те URI, которые вы только что вставили, и отправляете их своему клиенту, а затем ваш клиентский код просто должен принять URI данных в виде строки, и добавьте его к аудиоэлементу.
Это будет выглядеть примерно так:
var audio = document.getElementById('audio_element');
audio.src = data_uri_string;