PHP скрипт для скачивания файлов через сайт со страницы списка, содержащей файлы в указанной папке на сервере

Вопрос: Мне нужна опция, чтобы показать другим людям, которые не являются программистами, разнообразие файлов, которые они могут загрузить из папки FTP-сервера (я использую WinSCP) Теперь проблема с кодом заключается в том, что если вы напишите одно конкретное имя файла в сценарии PHP, вы можете скачать его без проблем. Но мне нужно, чтобы они загрузили (что

Вопрос:

Мне нужна опция, чтобы показать другим людям, которые не являются программистами, разнообразие файлов, которые они могут загрузить из папки FTP-сервера (я использую WinSCP)

Теперь проблема с кодом заключается в том, что если вы напишите одно конкретное имя файла в сценарии PHP, вы можете скачать его без проблем. Но мне нужно, чтобы они загрузили (что работает нормально), а также чтобы они могли (в другой раз или кто-то еще) выбирать из предыдущих загруженных файлов и загружать тот конкретный, который они выбрали.

Таким образом, нам нужно открыть папку, показать все файлы, а затем выбрать один из этих файлов и загрузить его.

Кто-нибудь знает, как это решить или это вообще возможно?

<?php //uploads is the folder name at the ftp server if ($handle = opendir(‘uploads/’)) { while (false !== ($entry = readdir($handle))) { // if ($entry != «.» && $entry != «..») { //download.php is the file where we write the code echo «<a href=’download.php?file=».$entry.»‘>».$entry.»</a>n»; } } closedir($handle);// } // we are trying to get the files by listing it with .$file variable $file = basename($_GET[‘file’]); $file = ‘uploads/’.$file; //here we are $mimi = $file; if(!mimi_exists($file)){ // file does not exist die(‘file not found’); } else { header(«Cache-Control: public»); // header(«Content-Description: File Transfer»);// header(«Content-Disposition: attachment; filename=$file»);// header(«Content-Type: application/zip»);// header(«Content-Transfer-Encoding: binary»);// // read the file from disk readfile($file); } ?>

В этом предыдущем коде имена файлов (из папки) перечислены и показаны в виде ссылок, но мы не нажимаем на них.

Лучший ответ:

Код, который

  1. Списки файлов
  2. Скачивает файл

должен быть отдельным.

(Хотя это и не обязательно), проще всего поместить их в отдельные файлы, такие как list.php и download.php. list.php сгенерирует список ссылок для скачивания, которые будут opendir на download.php (что вы уже делаете в opendir… closedir):

if ($handle = opendir(‘uploads/’)) { while (false !== ($entry = readdir($handle))) { // if ($entry != «.» && $entry != «..») { //download.php is the file where we write the code echo «<a href=’download.php?file=».$entry.»‘>».$entry.»</a>n»; } } closedir($handle);// }

Файл download.php будет содержать остальную часть вашего кода:

// we are trying to get the files by listing it with .$file variable $file = basename($_GET[‘file’]); $filepath = ‘uploads/’.$file; if(!file_exists($filepath)){ // file does not exist die(‘file not found’); } else { header(«Cache-Control: public»); // header(«Content-Description: File Transfer»);// header(«Content-Disposition: attachment; filename=$file»);// header(«Content-Type: application/zip»);// header(«Content-Transfer-Encoding: binary»);// // read the file from disk readfile($filepath); }

(Я заменил ваши странные mimi_exists на file_exists и file_exists проблемы, связанные с тем, что внутренний путь загрузки файла был случайно отправлен в браузер)

Аналогичный вопрос: список и загрузка кликаемого файла с FTP.

Ответ №1

Спасибо, это сработало, но теперь проблема в том, что когда мы загружаем файл, он автоматически добавляет uploads_ к имени, например uploads_filename.txt, что препятствует нормальному открытию файла. Он меняет формат, поэтому его нельзя открыть. (это также для .png,.pdf или любого другого формата)

Оцените статью
Добавить комментарий