Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Сеть > Залить папку по фтп


Автор: luinel 10.5.2006, 15:34
Я наверное уже всех достала, особенно Mal Hack smile , сори- учусь я.
Не могу выделить при заливке по фтп папку, если не указывать точно путь, ничего не получается.

А как сделать что бы каждый юзер сам мог путь указывать- не пойму.  

Автор: R.M. 10.5.2006, 16:08
luinel, а я непойму о чём ты.

Цитата(luinel @  10.5.2006,  16:34 Найти цитируемый пост)
Не могу выделить при заливке по фтп папку, если не указывать точно путь

Это где? На webftp? В своём скрипте? В total commander'е? Где это поподробней опиши проблему. 

Автор: Mal Hack 10.5.2006, 17:49
Модератор: думаю Вам не надо объяснять, что FTP - сетевой протокол, а следовательно тему надо было создавать в соответствующем форуме !!!
Где, как, куда выделить?

Если ты имеешь ввиду виделение папки и ее аплод из окошка, которое вылезает у клиента после нажатия на кнопочку Обзор, то так нельзя в принципе. 

Автор: luinel 10.5.2006, 18:47
Я знаю что нельзя нажав кнопочку выделить папку, есть ли какаято  возможность одним скриптом сделать просмотр для клиента папок на его машине и выбор папки, потом передать путь к этой папке скрипту отрывающему фтп соединение.
Я пока только сделала поле для ввода пути ручками, но это не удобно- гдето обязательно кто то ошибку сделает. Хотелось бы как с кнопкой обзор.

З.Ы. Сори за раздел форума- в запарке не заметила smile , каюсь smile  

Автор: PARROT 10.5.2006, 18:52
luinel, попробуй посмотреть тут: http://www.bondsoft.ru/index.php?id=6&id_doc=3&php=ftpserver 

Автор: Mal Hack 10.5.2006, 19:02
Цитата(luinel @  10.5.2006,  18:47 Найти цитируемый пост)
Я знаю что нельзя нажав кнопочку выделить папку, есть ли какаято  возможность одним скриптом сделать просмотр для клиента папок на его машине и выбор папки, потом передать путь к этой папке скрипту отрывающему фтп соединение.

НЕЛЬЗЯ ЭТО ПРОТИВОРЕЧИТ ПРОТОКОЛУ HTTP 1.1 !!! 

Автор: luinel 10.5.2006, 19:06
ТОгда что только путь ручками писать? smile 

Автор: Mal Hack 10.5.2006, 20:31
luinel, какой путь?
Объясни в конце-конвов нормально что ты хочешь. 

Автор: luinel 10.5.2006, 21:07
мне надо сделать для клиента возможность загрузки на сервер папки.
Сейчас все так:
Я сделала форму в которой клиент пишет руками путь к папке которую хочет залить, потом нажимает кнопку и путь пересылается постом в скрипт который открывает фтп соединение с сервером.Скрипт получает путь  к папке на машине клиента и загружает папку на сервер.

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

Автор: Mal Hack 10.5.2006, 21:16
Цитата(luinel @  10.5.2006,  21:07 Найти цитируемый пост)
Я сделала форму в которой клиент пишет руками путь к папке которую хочет залить, потом нажимает кнопку и путь пересылается постом в скрипт который открывает фтп соединение с сервером.Скрипт получает путь  к папке на машине клиента и загружает папку на сервер.

И что згружает? 
Серьезно чтоли?


Цитата(luinel @  10.5.2006,  21:07 Найти цитируемый пост)
А я хочу что бы клиент не писал путь руками а у него была возможность нажав обзор, просмотреть содержимое своего винта и выбрать нужную ему папку. И потом  после нажатия сабмита путь к этой папке постом передастся в скрипт открывающий фтп соединение.

Нельзя так сделать...
Да и потом, не путай серверную и клиентскую часть. 

Автор: S.A.P. 10.5.2006, 21:22
JavaScript ом так список не получить. Если действительно есть FTP соединение от сервера к клиенту, то можно пойти обходным путём: сформировать список файлов на сервере заранее и на JavaScript написать какую - нибудь оболочку для выбора файла/папки из списка.

Других решений я пока не вижу. 

Автор: luinel 10.5.2006, 21:26
А почему не должен загружать, я не путаю клиенскую часть и серверную- 
1. ввели путь -  при нажатии  сабмита отправили на сервер и вызвали скрипт- фтп.
2. скрипт запустился со всеми нужными ему параметрами(путем к файлу у клиента, путем  куда папку заливать).

Пока не совсем правильно работает- папка пустая получается- но посижу и разберусь- главное что идея работает 

Автор: Mal Hack 10.5.2006, 21:45
luinel, либо ты ничего объяснить не можешь, либо не понимаешь элементарных вещей.
Вот есть у пользователя папка на компе, а в ней файлы. Он хочет залить их на сервер.
ВСЕ ПАПКУ ЗАЛИТЬ Н НЕ МОЖЕТ ЧЕРЕЗ HTTP СОЕДИНЕНИЕ, т.е. ЧЕРЕЗ БРАУЗЕР.
Только через FTP соединение, открытое на машине пользователя к серверу.

PHP тут НИКАК НЕ УЧАСТВУЕТ! !! 

Автор: luinel 10.5.2006, 21:52
Но у пхп есть функции для создания фтп соединенрия, вот код скрипта который создает фтп соединение
Код

$destination_file=$_POST['path'];
$destination_file=stripslashes($destination_file);
//$destination_file=str_replace("\\","/",$destination_file);
$conn_id = ftp_connect($ftp_server); 
$source_file='/tmp';
var_dump($destination_file);
// login ñ username è password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 


if ((!$conn_id) || (!$login_result)) { 
        echo "FTP connection has failed!";
        echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
        die; 
    } else {
        echo "Connected to $ftp_server, for user $ftp_user_name";
    }





$upload = ftp_fput($conn_id,  $source_file, $destination_file, FTP_BINARY); 

if (!$upload) { 
        echo "FTP upload has failed!";
    } else {
        echo "Uploaded $source_file to $ftp_server as $destination_file";
    }


ftp_close($conn_id); 
?>


Может я не могу просто толком объяснитьsmile 

Автор: Mal Hack 10.5.2006, 21:56
Цитата(luinel @  10.5.2006,  21:52 Найти цитируемый пост)
Но у пхп есть функции для создания фтп соединенрия, вот код скрипта который создает фтп соединение

ФТП соединение с ФТП сервером !!!
Простой пользователь не есть ФТП сервер. И Используя эти функции ПХП скрипт становится как бы простым пользователем по отношению к удаленному ФТП серверу. 

Автор: luinel 10.5.2006, 21:59
Хорошо, когда я пишу $ftp_server=ftp.myhost разве я не подключаюсь к фтп серверу на моем хосте?  Я совсем запуталась, а сдавать эту часть заказчику завтра 

Автор: Mal Hack 10.5.2006, 22:05
Когда ты так пишешь ты присваиваешь переменной значение имени ФТП сервера.
Он может быть как там где и сайт, а может быть и другой. Но это не будет простой пользователь сети. 

Автор: luinel 10.5.2006, 22:12
Спасибо, я еще больше запуталась.
Я знаю что на моем хосте есть фтп сервер и знаю его адрес.
Могу ли я указав в скрипте имя фтп сервера его использовать, достаточно ли только указать имя.

ftp_connect($ftp_server)- я функцией создаю соединение с фтп сервером или нет, после этого я могу использовать фтп протокол для загрузки папки на этот сервер?
Может вопросы глупые- но я уже ничего не понимаю   

Автор: Mal Hack 10.5.2006, 22:25
Цитата(luinel @  10.5.2006,  22:12 Найти цитируемый пост)
ftp_connect($ftp_server)- я функцией создаю соединение с фтп сервером или не

Да, создаешь.

Цитата(luinel @  10.5.2006,  22:12 Найти цитируемый пост)
после этого я могу использовать фтп протокол для загрузки папки на этот сервер?

Какой папки? Которая у пользователя? Нет, т.к. твой скрипт не имеет к ней доступа, что, как мне кажется, вполне очевидно. 

Автор: luinel 10.5.2006, 22:30
Тогда что делает эта функция?
ftp_put
Производит загрузку файла на FTP-сервер.

Синтаксис :
int ftp_put(int ftp_stream, string remote_file, string local_file, int mode)

Функция ftp_put() загружает файл на FTP-сервер под именем remote_file.
  

Автор: Mal Hack 10.5.2006, 23:04
luinel, файл с твоего сервера из той его части, где может работать PHP на удаленный сервер.
Слово "пользователь" сдесь где-ть мелькает? Нет.
 

Автор: luinel 11.5.2006, 06:30
все, с утра все дошло- файл или папка должны быть уже на хосте, что бы скрипт-фтп мог  к ним добраться.

Но как тогда залить папку на сервер, заказчик руками и ногами упирается против архивирования папки. Он где то слышал что есть скрипты для заливки папки.

Mal Hack - выручай- подскажи как быть.
 
я уже письмо заказчику написала, что на сегодня не успеваю и вообще меня машина 5 раз переехала smile 

Автор: Mal Hack 11.5.2006, 06:58
Цитата(luinel @  11.5.2006,  06:30 Найти цитируемый пост)
Но как тогда залить папку на сервер

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

Автор: luinel 11.5.2006, 18:11
Я пошла мучать людей в раздел JS  , Mal Hack спасибо огромное что все таки достучался до остатков моих мозгов, несмотря на мое сопротивление smile 

Автор: luinel 12.5.2006, 20:28
Я нашла готовый скрипт, там не обошлось без Java, поэтому с чистой совестью содралаsmile вот http://www.radinks.com/upload/ 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)