PHP выводит внутренний файл сервера? - PullRequest
1 голос
/ 18 сентября 2011

На моем сервере есть каталог с музыкальными файлами, обычно в формате .mp3. Я пишу веб-приложение для поиска и воспроизведения этих треков.

Все файлы хранятся с абсолютным путем к серверу, исполнителем, альбомом и названием в базе данных MySQL.

Что я хочу сделать, так это иметь PHP-файл, который «выводит» mp3-файл на сервер, который обычно недоступен из Интернета. Итак, вот чего я хочу достичь:

клиент запрашивает play.php? Id = 10 PHP получает абсолютный путь к серверу из базы данных MySQL, где ID = 10 PHP выводит файл (который действительно будет находиться, например, в «/home/user/files/no_web/mp3/Thing.mp3») Для клиента это выглядит так, как будто есть mp3-файл с именем http://myserver.com/play.php?id=10, и он начинает воспроизводиться.

Я уверен, что такого рода вещи возможны, просто не знаю, как. Заранее спасибо:)

Ответы [ 3 ]

1 голос
/ 18 сентября 2011

Вам нужно отправить правильный content-type заголовок и затем просто вывести файл:

header('Content-type: audio/mpeg3');
readfile('filename.mp3');
1 голос
/ 18 сентября 2011

Для чтения и отправки файла вы можете использовать функцию readfile .

Чтобы установить mime-тип, чтобы браузер действительно знал, какой тип файла отправляется веб-сервером, используйте функцию заголовка, например:

header('Content-Type: audio/mpeg');

Кроме того, вы также можете установить HTTP-заголовок Content-Length.

header('Content-Length: ' . filesize($filepath) );
0 голосов
/ 18 сентября 2011

Если все, что вы пытаетесь сделать, это позволить пользователю загрузить mp3, просто используйте команду readfile, которая прочитает файл mp3 и передаст его клиенту.Однако вы должны убедиться, что вы правильно установили тип mime.

...