1

你好,我已经在这个脚本上工作了两个星期,但我不知道该怎么做。
我正在使用 PHP,我想下载视频,问题在于“readfile”函数不适用于 /var/www 中的文件,这是一个问题,因为我有很多视频并且 / 中没有足够的空间分割。这是我的脚本谢谢。

$fichero = "/home/myhome/Video/$video";

if (file_exists($fichero)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($fichero));
        header('Content-Transfer-Encoding: binary');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($fichero));
        ob_clean();
        flush();
        readfile($fichero);
        exit;
}else{
    die("The File $fichero does not exist");
}   

我仔细检查了地址并增加了下载的最大大小,所以如果您有任何解决方案,那就太好了。

4

2 回答 2

2

您可以使用 mod rewrite 来执行此操作:

http://httpd.apache.org/docs/2.2/urlmapping.html

使用类似的东西:

RewriteEngine On
Alias /videos /home/myhome/Video

它将任何文件映射/home/myhome/Video/www.site.com/videos/

或者您可以更具体一点,并进行基于正则表达式的匹配:

RewriteEngine On
ScriptAliasMatch ^/videos/([^\.])+.mp4 /home/myhome/Video/$1.mp4

它将映射任何与规则匹配的文件:/videos/everythingexepctadot.mp4并将其映射到/home/myhome/Video/matchedtext.mp4

将此与一些 RewriteCond 结合起来,您就有了一种从非 Web 根目录提供数据的简单方法。

于 2013-04-08T15:17:56.520 回答
0



请先检查目录读/写权限。只需尝试以下代码以动态设置权限。

chmod("/home/myhome/Video/", 0644);

$fichero = "/home/myhome/Video/$video";

if (file_exists($fichero)) {
 //Your Code   
}else{
//Your Code   
}   

干杯,
简森。

于 2013-04-08T15:32:09.497 回答