Поэтому у меня проблема в том, что URL моего файла слишком длинный в моем php-скрипте.
На данный момент путь моего файла:
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 (код здесь) (функция здесь) но это не работает для меня, как это.
Я читал, что вы можете удалить части строки, которые вам не нужны, но я понятия не имею, как мне это реализовать, потому что я никогда раньше не работал с php.
Существует разница между путем и URL. Когда вы создаете ссылку, вы должны использовать краткую форму для URL, поэтому в основном:
echo "<td><a href=\"".$file->config["outputFolder"].'/'.$f["name"]."\" download > ".$f["name"]."</a></td>";
Вам может понадобиться создать геттер, если config является приватным.
Но внутренне вы все равно должны использовать полный путь, который, кажется, реализован правильно.
Я думаю, что вы пытаетесь скачать в Window, подробнее 🙂
Почему в Windows существует ограничение длины пути в 260 символов?
Измените свой веб-корень на более короткий или настройте службу в Ubuntu с помощью VMware:) …
Проблема заключалась в том, что выводом был полный путь к каталогу загрузки, но единственной частью, которая мне была нужна, был точный каталог.
Вместо «/ var / www / vhosts / my_hostname / website / page / downloads /», который был задан $ file, теперь он дает только «downloads» для построения URL.
Теперь это работает.