找不到PHP下载的文件

时间:2013-07-24 21:07:17

标签: php

我有一个脚本,根据通过URL中的GET变量发送的ID获取mp3轨道的url。然后该脚本强制下载此URL。我遇到的问题是找不到曲目。

$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

我尝试将完整的网址设为$file_path,所以http://localhost/upload/ ...但同样的事情发生了。

如果我直接输入了该文件,那么我就不知道发生了什么。

2 个答案:

答案 0 :(得分:2)

如果图片的路径为 root_folder / uploads / filename ,请尝试以下

 
  $file_path = $_SERVER["DOCUMENT_ROOT"] . "/uploads/" . filename;
 

答案的要点是:不是使用相对路径,而是使用文件的绝对路径,其中直到根文件夹的所有内容都由 $ _ SERVER [“DOCUMENT_ROOT”] 引用。

希望解释清楚,答案有所帮助。

答案 1 :(得分:0)

如果您在根文件夹之外运行脚本,您想使用相对路径,请尝试:

$file_path  = './uploads/' . $base_url; 

如果您在根文件夹中运行脚本并且只想访问子文件夹,请尝试:

$file_path  = 'uploads/' . $base_url;