繁体   English   中英

无法通过php脚本访问文件

[英]Can't reach file by php script

今天,我想创建一些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;

并获取文件名和文件URL

$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'];

对于file_exists($file) ,变量$file需要完整路径。 并且必须是文件系统上的路径,而不是网站位置的URL。

因此,您需要类似:

$file = $_SERVER['DOCUMENT_ROOT'] . '/app/webroot/sounds/';

$_SERVER['DOCUMENT_ROOT']为您提供htdocs文件夹的文件系统路径,因此其余位置都必须是相对的。

好。 问题很简单-我在路径前面有一个/。 现在,它可以正常工作。 谢谢大家的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM