Ваша ссылка в сгенерированном теге <a>
указывает на веб-сервер, на котором нет связанного файла.
Вам нужно сделать ссылку на скрипт PHP, присвоив ему имяфайла для скачивания.Затем сценарий загрузит файл с FTP-сервера и передаст загруженный файл обратно пользователю (в веб-браузер).
echo "<a href=\"download.php?file=".urlencode($file)."\">".htmlspecialchars($file)."</a>";
Очень тривиальная версия сценария download.php
:
<?
header('Content-Type: application/octet-stream');
echo file_get_contents('ftp://username:password@ftp.example.com/path/' . $_GET["file"]);
Сценарий download.php
использует Оболочки URL FTP .Если это не разрешено на вашем веб-сервере, вам придется пойти более сложным путем с функциями FTP.См. PHP: Как мне прочитать файл с FTP-сервера в переменную?
Хотя для действительно правильного решения вы должны предоставить некоторые заголовки HTTP, связанные с файлом, напримерContent-Length
, Content-Type
и Content-Disposition
.
Также приведенный выше тривиальный пример сначала загружает весь файл с FTP-сервера на веб-сервер.И только тогда он начнет передавать его пользователю (веб-браузеру).Что является пустой тратой времени, а также памяти на веб-сервере.
Для лучшего решения см. Загрузка файла с помощью сценария PHP с FTP-сервера в браузер с заголовком Content-Length без сохранения файла навеб-сервер .
Вы также можете автоматически определить Content-Type
, если все ваши файлы не относятся к одному типу.