Установка апача для обслуживания PHP, когда файл MP3 требуют

Просто немного общей информации:

lookat матрица является матрицей, которую поворачивают положения/, что-то для указания на (посмотрите на), точка в пространстве, от другой точки в пространстве.

метод берет желаемый "центр" представления камер, вектор, который представляет направление для камеры (почти всегда (0,1,0), но это не должно быть), и "глазной" вектор, который является местоположением камеры.

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

откровенно я не совсем уверен, почему компонент перевода устанавливается, как это находится в этом методе. В gluLookAt (от OpenGL), компонент перевода установлен на 0,0,0, так как камера просматривается как являющийся в 0,0,0 всегда.

10
задан Community 23 May 2017 в 10:32
поделиться

4 ответа

В вашем коде есть несколько ошибок:

  • Ресурс может иметь только одно единственное значение Content-Type . Поэтому вам нужно решить, какой тип носителя вы хотите использовать. Я предлагаю audio / mpeg .
  • Вы забыли указать расположение в Content-Disposition . Если вы просто хотите указать имя файла и не хотите менять расположение, используйте значение по умолчанию inline .

Остальное выглядит нормально. Но я бы также отправил код состояния 404, если файл не может быть найден.

$track = "lilly.mp3";

if (file_exists($track)) {
    header("Content-Type: audio/mpeg");
    header('Content-Length: ' . filesize($track));
    header('Content-Disposition: inline; filename="lilly.mp3"');
    header('X-Pad: avoid browser bug');
    header('Cache-Control: no-cache');
    readfile($track);
    exit;
} else {
    header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
    echo "no file";
}
17
ответ дан 3 December 2019 в 17:20
поделиться

Используйте заголовок x-sendfile вместо readfile для лучшей производительности.

http://john.guen.in/past/2007/4/17/send_files_faster_with_xsendfile/

2
ответ дан 3 December 2019 в 17:20
поделиться

Вы можете просто сделать так, чтобы у вас было правило mod_rewrite для выполнения каждого запроса на музыку / *. Mp3 через ваш файл mp3.php.

Например, что-то вроде этого

RewriteEngine on
RewriteRule ^/music/(.*\.mp3)    /music/mp3.php?file=$1 [L]

] mp3.php может затем забрать запрошенный файл из $ _GET ['file'], но если вы воспользуетесь этим подходом, я рекомендую вам проверить правильность имени файла, чтобы убедиться, что он ссылается только на файл в желаемом каталоге.

//ensure filename just uses alphanumerics and underscore
if (preg_match('/^[a-z0-9_]+\.mp3$/i', $_GET['file']))
{
    //check file exists and serve it

    $track=$_SERVER['DOCUMENT_ROOT'].'/music/'.$_GET['file'];
    if(file_exists($track))
    {
        header("Content-Type: audio/mpeg");
        header('Content-length: ' . filesize($track));
        //insert any other required headers...

        //send data
        readfile($track);
    }
    else
    {
        //filename OK, but just not here
        header("HTTP/1.0 404 Not Found");
    }

}
else
{
    //bad request
    header("HTTP/1.0 400 Forbidden");
}
4
ответ дан 3 December 2019 в 17:20
поделиться

У меня работает (в .htaccess):

<FilesMatch "mp3$">
    SetHandler application/x-httpd-php5
</FilesMatch>
0
ответ дан 3 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: