HotReboot

ответов0 / помог0

FTP и браузер

1680298240
Здравствуйте. Может кто натолкнёт на мысль как скачать из списка файл из браузера.

$files = ftp_nlist($ftp, "*");
foreach ($files as $file){
    echo $file."<br/>";
}
Спасибо. P.S. ftp с логином и паролём.
para_bellum
ответов4 / помог1
1680298384
Браузеры и сами могут подключаться по FTP. Но если вам нужен посредник, то просто сделайте подобные ссылки: /?download=имя_файла При клике по такой ссылке получайте имя файла из запроса:

$filename = filter_input(INPUT_GET, 'download');
Потом скачивайте его к себе на сервер (естественно, предварительно проводя валидацию пришедшего имени): https://www.php.net/manual/ru/function.ftp-get.php И отдавайте клиенту.
влепить жирный лайк
HotReboot
ответов0 / помог0
1680298592
para_bellum, «Браузеры и сами могут подключаться по FTP.» Уже нет (https://chromestatus.com/feature/6246151319715840, https://blog.mozilla.org/addons/2020/04/13/what-to-expect-for-the-upcoming-deprecation-of-ftp-in-firefox/) «Потом скачивайте его к себе на сервер» Так и было задумано, но не нравится им, что файлы сначала на сервере качаются. Типа ожидание ибо файлы по гигу. Сначала на сервер, потом с сервера. Но видимо придётся мириться или отговаривать от ftp.
влепить жирный лайк
para_bellum
ответов4 / помог1
1680298770
HotReboot, «Уже нет» Упустил момент исключения этой функциональности, значит. Пару раз всего пользовался FTP-подключениями через браузер. Если достаточно большие файлы, то не понимаю их требования. Если они хотят, чтобы разные пользователи могли скачать, пусть организуют доступ к файлам по HTTP. Если только сами будут иметь доступ к файлам, пусть FTP-клиент ставят. Можно ещё попробовать данные, получаемые по FTP, передавать сразу в выходной поток:

ftp_fget($ftp, STDOUT);
На случай обрыва связи нужно будет добавить возможность продолжения скачивания файла с некоторого байта, передавая ftp_fget аргумент offset. https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests Ещё вроде можно прямо в Nginx настроить прокси между HTTP и FTP, чтобы не прогонять гигабайты через PHP.
влепить жирный лайк
Сначала вход
A B i U S JS PHP HTML CSS SQL C C++ C# PYTHON JAVA
Для входа только имэйл или имя и апроль
Можно сменить аватар
Имэйл Ваше имя
Пароль