Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> cURL Как получить информацию об FTP-URL, Структурированную,Встроенными средствами 
:(
    Опции темы
ZVano
Дата 28.2.2011, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 11.12.2006
Где: Украина, Кривой Р ог

Репутация: нет
Всего: 4



Предположим есть URL "ftp://ftpHost/files/FileOrDir".
FileOrDir - файл или каталог на FTP-сервере.

Мне нужно получить по нему(URL) информацию:
  • Тип ресурса - файл или каталог
  • Размер - для файла
  • Дата/Время создания
Есть ли в cURL средства для этого? Желательно(но необязательно) получать информацию в структурированом виде, а не текстом, который потом парсить нужно.
Есть ли средства получить для указаного каталога листинг только файлов, либо только подкаталогов?
Есть ли средства получить для указаного каталога перечень содержимого в структурированом виде?


Получить любые списки на стороне клиента можно проанализировав (парсинг) полный листинг в текстовом виде, но это совсем не прикольно.
Листинг у разных FTP-серверов разный
Например:

//1я и 2я строки получены с разных FTP серверов.
123456789012345678901234567890123456789012345678901234567890
-rw-rw-rw-   1 ftp      ftp     19438796 May 01  2007 ADO.NET.djvu
drwxrwxrwx    2 2002       65534            4096 Feb 28 08:55 incoming


Результат листинга каталога в полной форме (CURLOPT_FTPLISTONLY = 0):

Код

ftp           0 Feb 25 12:56 .
drw-rw-rw-   1 ftp      ftp            0 Feb 25 12:56 ..
drw-rw-rw-   1 ftp      ftp            0 Feb 10 20:11 Anonimouse
drw-rw-rw-   1 ftp      ftp            0 Feb 10 20:18 DIR1
drw-rw-rw-   1 ftp      ftp            0 Feb 10 20:19 DIR2
-rw-rw-rw-   1 ftp      ftp           11 Feb 10 20:14 Readme.txt
-rw-rw-rw-   1 ftp      ftp           95 Feb 10 20:19 tree.txt
-rw-rw-rw-   1 ftp      ftp          279 Feb 22 11:38 tree_f.txt
-rwxrwxrwx   1 ftp      ftp           14 Jul 09  2007 Z_Tree.bat
-rwxrwxrwx   1 ftp      ftp           20 Jul 09  2007 Z_Tree_f.bat>



Результат листинга каталога в сокращенной форме (CURLOPT_FTPLISTONLY = 1):

Код

..
nonimouse
DIR1
DIR2
Readme.txt
tree.txt
tree_f.txt
Z_Tree.bat
Z_Tree_f.bat




Идем в cURL FAQ и читаем:
Код

http://curl.haxx.se/docs/faq.html#How_do_I_list_the_root_dir_of_an
3.17 How do I list the root dir of an FTP server?

There are two ways. The way defined in the RFC is to use an encoded slash 
in the first path part. List the "/tmp" dir like this: 

     curl ftp://ftp.sunet.se/%2ftmp/
or the not-quite-kosher-but-more-readable way, by simply starting the path 
section of the URL with a slash: 

     curl ftp://ftp.sunet.se//tmp/


Что в моем голимом переводе означает:
Код

3.17 Как получить список корневых директорий на FTP-сервере?
Существует два пути. 

1й - как требует RFC, использовать кодированые слеши в 1й части пути.
Список в поддиректории "/tmp" получаем так:
     curl ftp://ftp.sunet.se/%2ftmp/

2й - технически некорректный, но более читаемый способ, просто вначале пути поставить слеш
     curl ftp://ftp.sunet.se//tmp/


И что, это означает что нет иного способа получить листинг файлов? Например, как в wininet (FtpFindFirstFile/InternetFindNextFile).



Это сообщение отредактировал(а) ZVano - 28.2.2011, 20:02


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
ZVano
Дата 2.3.2011, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 259
Регистрация: 11.12.2006
Где: Украина, Кривой Р ог

Репутация: нет
Всего: 4



Ответ на вопрос о получении листинга тут
http://curl.haxx.se/docs/faq.html#How_do_I...TP_directory_li

Код

5.15 How do I get an FTP directory listing?
If you end the FTP URL you request with a slash, libcurl will provide you 
with a directory listing of that given directory. You can also set 
CURLOPT_CUSTOMREQUEST to alter what exact listing command libcurl would use 
to list the files.
...


Все сводится к тому, что нужно распарсивать текст полного листинга.
Формат листинга не стандартизирован.
Сделать это можно самому, либо воспользоваться чьей то библиотекой.
Иного способа не существует.


Остается вопрос - можно ли получить информацию о конкретном файле, и как.


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.