2010-07-15 3 views
2

hy guys, Мне очень нужна ваша помощь. Я успешно подключился к ftp-серверу через php. Я перечисляю все файлы, которые находятся на сервере. если я нажимаю на файл, браузер должен запросить окно загрузки, чтобы загрузить файл.PHP: подсказка скачать с ftp?

Я не знаю, как это сделать. какой метод я буду использовать. ftp_get меня смущает. он говорит, что я должен также объявить local_file. Я просто хочу, чтобы файл на сервере загружался на мой жесткий диск.

, как я могу это сделать?

рассматривает матовый

ответ

1

Удаленный файл должен быть сначала загружен на ваш сервер, прежде чем вы сможете отправить его пользователю. Он невидим для пользователя, но у вас нет выбора. PHP не позволит браузеру напрямую разговаривать с FTP-сервером.

Создайте отдельный скрипт php, который вызывает ftp_get для определенного файла, временно сохраняет его на сервере, чтобы пользователь мог его загрузить.

Что-то вроде:

<?php 
//assume the page was called like download.php?filename=downloaded.pdf 
header('Content-Disposition: attachment; filename="'.$_GET['filename'].'"'); 
$tempFile = 'temp'.rand(); 
ftp_get($ftp, $tempFile, $_GET['filename'], FTP_BINARY); 

readfile($tempFile); 

Вы можете добавить код для удаления TempFile тоже.

+0

Я уже пытался это сделать. Я просто не знаю, как использовать ftp_get. какой локальный файл я должен объявить? Я не хочу объявлять локальный файл. он должен просто взять файл-сервер и загрузить его на любой жесткий диск. – matt

+1

Сначала загрузите файл «временно» на свой сервер. Файл должен сделать пит-стоп на вашем сервере, вы не можете обойти. Затем, используя эту функцию «header» и функцию «readFile», пользователь сможет сразу загрузить файл на свой локальный жесткий диск. –

+0

ничего себе, спасибо! он почти работает. как-то единственная проблема, кажется, в том, что я не могу открыть файл локально. он сохраняет его под тем же именем (с правильным суффиксом). однако каждый файл, который я скачиваю, является сломанным. любая идея, что это может быть? – matt

0

Если вы предоставите ссылку на файл, который не может быть прочитан в браузере (например, PHP файл, аудио, видео и т.д.) он будет просить вас, чтобы загрузить файл.

Другой способ - использовать заголовки PHP на странице и распечатать страницу и перейти на эту страницу. http://www.ryboe.com/tutorials/php-headers-force-download

+0

Я не знаю, как предоставить ссылку на файл. это на самом деле не ссылка на сам файл на сервере, но больше имя пути. но он не указывает на файл на сервере. Я подключаюсь через ftp_connect. я понятия не имею, как я могу указать на файл на сервере. сервер защищен именем пользователя и паролем. – matt

Смежные вопросы