Обслуживание MP3 с SLIM-маршрутов на HTML5-плеер - PullRequest
0 голосов
/ 28 мая 2019

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

Если я запускаю эту команду из консоли в chrome, когда звук приостановлен или воспроизведение звука просто начинается снова с самого начала:

oAudio.currentTime = 22;

Я уверен, что это связано с тем, как SLIM обслуживает этот mp3-файл. Смотрите мой код ниже, который был сокращен для этого вопроса:

$app->get('/v1/files/rec/[{username}/{siterandom}/{year}/{month}/{day}/{filename}]', function (Request $request, Response $response, array $args) {

    $system_username = $args['username'];
    $siterandom = $args['siterandom'];
    $year = $args['year'];
    $month = $args['month'];
    $day = $args['day'];
    $filename = $args['filename'];


    // Database call here to check if user is active
    $active = 1;

        if($active != 1){
            $data = array(
              "check_login" => "FALSE"
         );
         return $response->withJson($data);
         exit;

        }

        else {


                // Alls good, User is associated with the site. MORE TO BE DONE HERE WITH FURTHER PORTAL PERMISSIONS
                $path = '/var/main_store/'.$siterandom."/".$year."/".$month."/".$day."/".$filename;


                $response = $response->withHeader('Content-Description', 'File Transfer')
                ->withHeader('Content-Type', 'application/force-download')
                ->withHeader('Content-Type', 'application/octet-stream')
                ->withHeader('Content-Type', 'application/download')
                //->withHeader('Content-Disposition', 'inline;filename="'.basename($path).'"')
                ->withHeader('Content-Transfer-Encoding', 'binary')
                ->withHeader('Content-Disposition', 'attachment; filename="' . basename($path) . '"')
                ->withHeader('Pragma', 'public')
                ->withHeader('Content-Length', filesize($path));

             readfile($path);
             return $response;      

        }


//})->setOutputBuffering(false);
});

Я пробовал различные варианты заголовков, но безрезультатно, и я просто снимаю в темноте. Кто-нибудь сталкивался с этим раньше или знает, что я делаю не так?

Спасибо

...