Автор Тема: Получение данных о файле с FTP сервера.  (Прочитано 6989 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Nikkor [?]

  • Новичок
  • *
  • Сообщений: 12
  • Репутация: 0
    • Награды
Добрый день господа!
Кто-нибудь пробовал получать аттрибуты файла с FTP сервера(дата создания,дата изменения) при помощи стандартной библиотеки FTPex.au3. Сколько не пытался, выдает не понятный набор цифр. Хотя в справке написано:

  • - Number of elements
  • [1] - File Attributes
    [2] - Creation Time Low
    [3] - Creation Time Hi
    [4] - Access Time Low
    [5] - Access Time Hi
    [6] - Last Write Low
    [7] - Last Write Hi
    [8] - File Size High
    [9] - File Size Low
    [10] - File Name
    [11] - Altername
     

Русское сообщество AutoIt

Получение данных о файле с FTP сервера.
« Отправлен: Февраль 05, 2010, 12:28:31 »

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2700
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Получение данных о файле с FTP сервера.
« Ответ #1, Отправлен: Февраль 05, 2010, 13:10:31 »
Код: AutoIt [Выделить]
#Include <FTPEx.au3>
#Include <WinAPI.au3>

Global Const $Host = ''
Global Const $Login = ''
Global Const $Password = ''

Global $hFtp, $hSession, $hFind, $aData

$hFtp = _FTP_Open('MyFtp')
$hSession = _FTP_Connect($hFtp, $Host, $Login, $Password)
$aData = _FTP_FindFileFirst($hSession, '', $hFind)
While Not @error
    ConsoleWrite('Файл: ' & $aData[10] & @CR)
    ConsoleWrite('Размер: ' & _WinAPI_MakeQWord($aData[9], $aData[8]) & ' байт' &  @CR)
    ConsoleWrite('Дата создания: ' & _FTP_FileTimeLoHiToStr($aData[2], $aData[3]) & @CR)
    ConsoleWrite('Дата изменения: ' & _FTP_FileTimeLoHiToStr($aData[6], $aData[7]) & @CR)
    ConsoleWrite('-------------------------' & @CR)
    $aData = _FTP_FindFileNext($hFind)
WEnd
_FTP_FindFileClose($hFind)
_FTP_Close($hFtp)

« Последнее редактирование: Февраль 05, 2010, 13:29:18 от Yashied »


Думай, прежде чем говорить.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Получение данных о файле с FTP сервера.
« Ответ #2, Отправлен: Февраль 05, 2010, 13:40:52 »
Yashied
А для публичных FTP-файлов можно получить подобную информацию?

Например для этого файла:
ftp://ftp.mozilla-russia.org/dictionaries/ru-en_spell_dictionary.xpi


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Русское сообщество AutoIt

Re: Получение данных о файле с FTP сервера.
« Ответ #2 Отправлен: Февраль 05, 2010, 13:40:52 »

Оффлайн Nikkor [?]

  • Новичок
  • *
  • Сообщений: 12

  • Автор темы
  • Репутация: 0
    • Награды
Re: Получение данных о файле с FTP сервера.
« Ответ #3, Отправлен: Февраль 06, 2010, 11:10:44 »
Спасибо огромное за пример, очень помогли мне! А почему, интересно, не работает пример с функцией _FTP_FindFileFirst, который я уже приводил ?

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2700
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Получение данных о файле с FTP сервера.
« Ответ #4, Отправлен: Февраль 06, 2010, 12:31:01 »
CreatoR  [?]
Цитировать
А для публичных FTP-файлов можно получить подобную информацию?

А в чем загвоздка?

Код: AutoIt [Выделить]
#Include <FTPEx.au3>
#Include <WinAPI.au3>

Global Const $Host = 'ftp.mozilla-russia.org'
Global Const $Login = ''
Global Const $Password = ''

Global $hFtp, $hSession, $hFind, $aData

$hFtp = _FTP_Open('MyFtp')
$hSession = _FTP_Connect($hFtp, $Host, $Login, $Password)
$aData = _FTP_FindFileFirst($hSession, 'dictionaries', $hFind)
While Not @error
    ConsoleWrite('Файл: ' & $aData[10] & @CR)
    ConsoleWrite('Размер: ' & _WinAPI_MakeQWord($aData[9], $aData[8]) & ' байт' &  @CR)
    ConsoleWrite('Дата создания: ' & _FTP_FileTimeLoHiToStr($aData[2], $aData[3]) & @CR)
    ConsoleWrite('Дата изменения: ' & _FTP_FileTimeLoHiToStr($aData[6], $aData[7]) & @CR)
    ConsoleWrite('-------------------------' & @CR)
    $aData = _FTP_FindFileNext($hFind)
WEnd
_FTP_FindFileClose($hFind)
_FTP_Close($hFtp)


Русское сообщество AutoIt

Re: Получение данных о файле с FTP сервера.
« Ответ #4 Отправлен: Февраль 06, 2010, 12:31:01 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Получение данных о файле с FTP сервера.
« Ответ #5, Отправлен: Февраль 06, 2010, 14:07:05 »
Yashied  [?]
Цитировать
в чем загвоздка?
Просто в своё время я пробовал это получить разными функциями FTP, ничего не получалось. Спасибо.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Получение данных о файле с FTP сервера.
« Ответ #6, Отправлен: Февраль 06, 2010, 16:13:53 »
Yashied
А возможно ещё получать полный заголовок файла, как в Http заголовке?

HTTP/1.1 200 OK
Server: uServ/1.5.2
Date: Sat, 06 Feb 2010 13:13:41 GMT
Content-Type: application/zip
Content-Length: 838562
Last-Modified: Thu, 29 Oct 2009 04:45:05 GMT
Connection: close
Accept-Ranges: bytes

:think:

В основном интересует Server, Content-Type, и Accept-Ranges (как я понял это индикатор поддержки докачки).


Добавлено: Февраль 06, 2010, 16:59:20
Кстати, вот написал небольшую функцию для парсинга аттрибутов файла, основано на информация с MSDN:

Код: AutoIt [Выделить]
Func _FTP_FileAttributesToStr($iAttributes, $sSeparator=" | ")
    Local Const $FILE_ATTRIBUTE_ARCHIVE = 32 ;A file or directory that is an archive file or directory. Applications typically use this attribute to mark files for backup or removal.
    Local Const $FILE_ATTRIBUTE_COMPRESSED = 2048 ;A file or directory that is compressed. For a file, all of the data in the file is compressed. For a directory, compression is the default for newly created files and subdirectories.
    Local Const $FILE_ATTRIBUTE_DEVICE = 64 ;This value is reserved for system use.
    Local Const $FILE_ATTRIBUTE_DIRECTORY = 16 ;The handle that identifies a directory.
    Local Const $FILE_ATTRIBUTE_ENCRYPTED = 16384 ;A file or directory that is encrypted. For a file, all data streams in the file are encrypted. For a directory, encryption is the default for newly created files and subdirectories.
    Local Const $FILE_ATTRIBUTE_HIDDEN = 2 ;The file or directory is hidden. It is not included in an ordinary directory listing.
    Local Const $FILE_ATTRIBUTE_NORMAL = 128 ;A file that does not have other attributes set. This attribute is valid only when used alone.
    Local Const $FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192 ;The file or directory is not to be indexed by the content indexing service.
    Local Const $FILE_ATTRIBUTE_OFFLINE = 4096 ;The data of a file is not available immediately. This attribute indicates that the file data is physically moved to offline storage. This attribute is used by Remote Storage, which is the hierarchical storage management software. Applications should not arbitrarily change this attribute.
    Local Const $FILE_ATTRIBUTE_READONLY = 1 ;A file that is read-only. Applications can read the file, but cannot write to it or delete it. This attribute is not honored on directories. For more information, see "You cannot view or change the Read-only or the System attributes of folders in Windows Server 2003, in Windows XP, or in Windows Vista".
    Local Const $FILE_ATTRIBUTE_REPARSE_POINT = 1024 ;A file or directory that has an associated reparse point, or a file that is a symbolic link.
    Local Const $FILE_ATTRIBUTE_SPARSE_FILE = 512 ;A file that is a sparse file.
    Local Const $FILE_ATTRIBUTE_SYSTEM = 4 ;A file or directory that the operating system uses a part of, or uses exclusively.
    Local Const $FILE_ATTRIBUTE_TEMPORARY = 256 ;A file that is being used for temporary storage. File systems avoid writing data back to mass storage if sufficient cache memory is available, because typically, an application deletes a temporary file after the handle is closed. In that scenario, the system can entirely avoid writing the data. Otherwise, the data is written after the handle is closed.
    Local Const $FILE_ATTRIBUTE_VIRTUAL = 65536 ;This value is reserved for system use.
   
    Local $sAttributes = ""
   
    Local $aAttribs = StringSplit( _
        "ARCHIVE|COMPRESSED|DEVICE|DIRECTORY|ENCRYPTED|HIDDEN|NORMAL|" & _
        "NOT_CONTENT_INDEXED|OFFLINE|READONLY|REPARSE_POINT|SPARSE_FILE|SYSTEM|TEMPORARY|VIRTUAL", "|")
   
    For $i = 1 To $aAttribs[0]
        If BitAND($iAttributes, Eval("FILE_ATTRIBUTE_" & $aAttribs[$i])) Then $sAttributes &= $aAttribs[$i] & $sSeparator
    Next
   
    Return StringRegExpReplace($sAttributes, "(\Q" & $sSeparator & "\E)+$", "")
EndFunc


используется для $aData[1] от «_FTP_FindFileFirst»:

Код: AutoIt [Выделить]
;$sAttributes = _FTP_FileAttributesToStr($aData[1])
$sAttributes = _FTP_FileAttributesToStr(BitOR(128, 256))
ConsoleWrite($sAttributes & @CRLF)

« Последнее редактирование: Февраль 06, 2010, 16:59:20 от CreatoR, Причина: Объединение сообщений »

Оффлайн WalterqSa [?]

  • WalterqSaBK
  • Сообщений: 7
  • Репутация: -1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
 
Поздравляю, мне кажется это великолепная мысль
 

Русское сообщество AutoIt

[Автоматизация] Re: Получение данных о файле с FTP сервера
« Ответ #7 Отправлен: Апрель 18, 2015, 06:01:43 »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Получение данных о файле с FTP сервера
« Ответ #8, Отправлен: Апрель 18, 2015, 06:06:05 »
WalterqSa,
Прекратите заниматься флудом.  >:(

Русское сообщество AutoIt

Re: Получение данных о файле с FTP сервера
« Ответ #8 Отправлен: Апрель 18, 2015, 06:06:05 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
3961 Просмотров
Последний ответ Июль 15, 2011, 19:00:46
от Garrett
6 Ответов
4230 Просмотров
Последний ответ Август 24, 2011, 18:09:14
от HungryDwarf
1 Ответов
4427 Просмотров
Последний ответ Март 02, 2012, 13:15:40
от ---Zak---
5 Ответов
8758 Просмотров
Последний ответ Июнь 07, 2012, 11:47:52
от ---Zak---
4 Ответов
3446 Просмотров
Последний ответ Май 03, 2012, 00:10:05
от running-frag
7 Ответов
6040 Просмотров
Последний ответ Июль 20, 2012, 10:50:13
от Redline
23 Ответов
7214 Просмотров
Последний ответ Январь 23, 2013, 22:09:19
от madmasles
2 Ответов
3100 Просмотров
Последний ответ Февраль 02, 2013, 13:25:03
от Zaramot
62 Ответов
13334 Просмотров
Последний ответ Январь 15, 2016, 11:01:17
от Ksenz44
6 Ответов
1852 Просмотров
Последний ответ Январь 21, 2016, 15:26:41
от avtoIT