PHP 文件下载路径太长

PHP file download Path too long

所以我的 php 脚本中的文件 url 太长了。

目前我文件的路径是:

website.tld/var/www/vhosts/my_hostname/website/page/downloads/file.mp3

但我想缩短它,使其成为从我的网站目录开始的路径,并且它是一个有效的 url。

website.tld/page/downloads/file.mp3

创建该路径的代码是这样的:

 echo "<td><a href=\"".$file->get_downloads_folder().'/'.$f["name"]."\" download > ".$f["name"]."</a></td>";

$file 从这个函数获取它的值:

 public function get_downloads_folder()
    {
            $path =  $this->config["outputFolder"];
            if(strpos($path , "/") !== 0)
            {
                    $path = dirname(__DIR__).'/' . $path;
            }
            return $path;
    }

这是来自 GitHub 项目 Youtube-dl-WebUI 的代码(code here) (function here) 但它对我不起作用。

我了解到您可以删除不需要的字符串部分,但我不知道如何实现它,因为我之前从未使用过 php .

路径和URL有区别。当您创建 link 时,您应该使用 URL 的缩写形式,所以基本上:

echo "<td><a href=\"".$file->config["outputFolder"].'/'.$f["name"]."\" download > ".$f["name"]."</a></td>";

如果配置是私有的,您可能需要创建一个 getter。

但在内部您仍应使用完整路径,这似乎已正确实现。

我认为您尝试在 Window 中下载,阅读更多 :)

Why does the 260 character path length limit exist in Windows?

更改您的 Web 根目录以缩短或在 ubuntu 中使用 VMware 设置您的服务 :)...

问题是输出是下载目录的完整路径,但我唯一需要的部分是确切的目录。

而不是 $file 给出的 "/var/www/vhosts/my_hostname/website/page/downloads/" 现在它只给出 "downloads" 来构建 url.

现在可以使用了。