今天我想创建一些php脚本,它将直接强制下载mp3文件。
我要下载的文件放在声音文件夹中,我可以通过http://playall.pl/sounds/ThemadpixprojectBadChick.mp3
访问它但是当谈到php脚本时 - 函数file_exists说,这个文件不在这个服务器上。
我该如何解决?
代码我用来下载文件
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file_name));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
获取文件名和文件网址
$file_name = ''.$sound['Sounds']['artist'].' - '.$sound['Sounds']['title'].'.mp3';
$file_name = preg_replace('/\s+/', '_', $file_name);
$file = 'http://playall.pl'.$this->webroot.'sounds/'.$sound['Sounds']['src_url'];
答案 0 :(得分:0)
对于file_exists($file)
,变量$file
需要完整路径。并且必须是文件系统上的路径,而不是Web位置的URL。
所以你需要这样的东西:
$file = $_SERVER['DOCUMENT_ROOT'] . '/app/webroot/sounds/';
$_SERVER['DOCUMENT_ROOT']
为您提供了htdocs文件夹的文件系统路径,因此其余部分必须是相对的。
答案 1 :(得分:0)
确定。问题很简单 - 我有一个/在路径前面。现在它正常工作。谢谢大家的帮助!