Fórum diferenças entre arquivo e diretorio via ftp #292541
22/08/2005
0
estou usando o idFtp do indy clients para criar diretorios no meu server ftp e fazer upload de arquivos. Porém, quando eu dou um ´list´ no idftp e ele retorna um tstringlist com os nomes dos arquivos, como eu faço pra diferenciar o que é arquivo e o que é diretório?
Grato!
Vitor Rubio
Curtir tópico
+ 0Posts
22/08/2005
Massuda
Gostei + 0
22/08/2005
Vitor Rubio
usando em branco ´´ ele só lista diretorios e arquivos.
Gostei + 0
22/08/2005
Adriano Santos
Fiz um teste aqui e o que obtive foi o mesmo resultado que o victo^_^ relatou, não dá pra saber quem é quem.
Gostei + 0
22/08/2005
Massuda
No servidor que utilizo, usando ´*.*´ retorna todos os arquivos enquanto ´*´ retorna todos os arquivos mais diretórios.
Fora isso, no início de cada string tem um conjunto de caracteres que indica os atributos (estilo Unix) de cada entrada no diretório...
-rw-rw-r-- 1 mickey.mouse ftp 12345 Jan 12 2000 imagem1.jpg drwxrwxr-x 2 mickey.mouse ftp 512 Jan 12 2000 diretorio1 -rw-rw-r-- 1 mickey.mouse ftp 12345 Jan 12 2000 imagem2.jpg
Uma outra forma de fazer isso, que independe do tipo de servidor, é manipular a lista TIdFTP.DirectoryListing...
var Lista: TStringList; I: Integer; ... // passo nil porque não preciso da resposta do servidor IdFTP1.List(nil); for I := 0 to Pred(IdFTP1.DirectoryListing.Count) do begin // IdFTP1.DirectoryListing[I].FileName = nome do arquivo/diretório if IdFTP1.DirectoryListing[I].ItemType = ditFile then begin // é um arquivo end else if IdFTP1.DirectoryListing[I].ItemType = ditDirectory then begin // é um diretório end; ... end; ...
Gostei + 0
22/08/2005
Adriano Santos
1 - Como usar só o DirectoryListing?
Vc disse que que uma outra forma seria usando um FOR e tals, fiz de acordo com seu exemplo:
procedure TForm1.Button1Click(Sender: TObject); var I : Integer; begin Application.ProcessMessages; with IdFTP1 do begin Connect; List(Nil); for I := 0 to Pred(DirectoryListing.Count)-1 do if DirectoryListing[I].ItemType = ditFile then ListBox1.Items.Add(´Arquivo: ´ + DirectoryListing[I].FileName) else if DirectoryListing[I].ItemType = ditDirectory then ListBox1.Items.Add(´Diretório: ´ + DirectoryListing[I].FileName); Disconnect; end; end;
Mas e qual seria a primeira forma?
2 - Como eu faço para navegar, ou seja, quero abrir a pasta PUB no meu servidor FTP? Direto no idFtp não tem como informar certo?
valeu
Gostei + 0
22/08/2005
Massuda
[quote:be0dbb3cb2=´Adriano Santos´]2 - Como eu faço para navegar, ou seja, quero abrir a pasta PUB no meu servidor FTP? Direto no idFtp não tem como informar certo?[/quote:be0dbb3cb2]Você tem que navegar usando TIdFTP.ChangeDir(...caminho...) e TIdFTP.ChangeDirUp (equivalem a usar ´CD´ e ´CD ..´ no prompt do DOS).
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)