Ранее я передавал 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);
});
Я пробовал различные варианты заголовков, но безрезультатно, и я просто снимаю в темноте. Кто-нибудь сталкивался с этим раньше или знает, что я делаю не так?
Спасибо