У меня есть сценарий, который получает URL-адрес для mp3-трека на основе идентификатора, отправленного через переменную GET в URL-адресе. Затем скрипт загружает этот URL-адрес. Проблема в том, что трек не найден.Файл не найден для загрузки PHP
$url = $row['url'];
$file_name = $row['track_name'] .' - '. $row['artist_name'];
$path_parts = pathinfo($url); //get path info
$base_url = $path_parts['basename']; //only include mp3 track just incase path added in there
$file_path = '../uploads/' . $base_url;
if (file_exists($file_path)) {
header('Content-Description: File Transfer');
header('Content-Type: audio/mpeg');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"".$file_name."\"");
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file_path));
ob_clean();
flush();
readfile($file_path);
exit;
}
else {
echo 'File not found.';
echo '<br/>';
echo $file_path;
}
Что такое шоу, это примерно так;
File not found.
../uploads/demo_4.wav
Я попытался поставить полный URL, как $file_path
, так http://localhost/upload/ ...
, но то же самое происходит.
Если я ввожу URL-адрес, файл находится там, поэтому я не совсем уверен, что происходит.
Помните, что чтение readfile/filexists - это FILESYSTEM, который может вообще не соответствовать пространству URL. просто потому, что у вас есть 'http: // example.com/download/demo_4.wav', это не значит, что в корневом каталоге вашего сайта будет' download' каталог. –
@MarcB Существует каталог загрузок, с которым я связан. '$ file_path = '../uploads/'. $ Base_url; ' –
Где находится этот скрипт относительно файла? Является ли каталог загрузок на один уровень выше, чем находится этот скрипт? –