Fórum idFTP1 Upload de Pasta ? #352997
04/02/2008
0
O que será que está acontecendo ?
Acho que o idFTP1 apenas faiz upload de Arquivos e n~çao de pastas
Alguém sabe o que deve ser feito ? :wink:
Warfighter
Curtir tópico
+ 0Posts
04/02/2008
Tiago Rizzon
1 - cria a pasta no servidor
2 - loop para enviar todos os arquivos via FTP (cópia)
Ou compactar a pasta e enviar como arquivo...
Se vc achar um método melhor blz, mas se não conseguir, posta aí novamente que te envio essa rotina q citei acima...
Abração! Boa sorte!
Gostei + 0
04/02/2008
Warfighter
1 - cria a pasta no servidor
2 - loop para enviar todos os arquivos via FTP (cópia)
Ou compactar a pasta e enviar como arquivo...
Se vc achar um método melhor blz, mas se não conseguir, posta aí novamente que te envio essa rotina q citei acima...
Abração! Boa sorte![/quote:483e2ff039]
Se puder me enviar a rotina de enviar todos o arquivos da pasta :wink: ?
Aguardo Respostas :wink:
Gostei + 0
04/02/2008
Tiago Rizzon
Abração
;-)
Gostei + 0
04/02/2008
Warfighter
Abração
;-)[/quote:3bfb55d111]
Blz :wink:
Qualquer coisa alguém souber posta ae :D
Gostei + 0
04/02/2008
Tiago Rizzon
var
A: Integer;
Lista: TStringList;
begin
{aconselho q vc aqui, nesta linha, extraia o nome da pasta do parâmetro ´caminhoPasta´, assim não é necessário
chamar essa procedure passando 2 parâmetros... o parâmetro ´nomePasta´ vc usaria como variável apenas desta procedure,
no entanto, se vc quiser alterar o nome da pasta no provedor, não altera!}
Lista := TStringList.Create;
if caminhoPasta[Length(caminhoPasta)] <> ´\´ then caminhoPasta := caminhoPasta + ´\´;
IdFTP1.Connect(True, -1);
if not PastaExiste(nomePasta) then IdFTP1.MakeDir(nomePasta); {se a pasta já ñ existe, cria}
IdFTP1.ChangeDir(nomePasta); {entra na pasta para enviar os arquivos}
Lista.AddStrings(ArquivosDaPasta(caminhoPasta, ´*.jpg´, False)); {se quiser pode usar filtro, ou não!}
showmessage(inttostr(lista.count));
for A := 0 to Lista.Count -1 do IdFTP1.Put(caminhoPasta + Lista.Strings[A], Lista.Strings[A], True);
IdFTP1.Disconnect;
{coloca um indicador dentro de progresso dentro do loop ou no evento onWork da IdFTP1}
{Acima, é necessário vc criar a função PastaExiste - uso a mesma para arquivos, só não postei pq fiz de qualquer
maienra, acredito q vc possa utilizar alguma melhor...}
{A função ArquivosDaPasta, que usei acima serve apenas para jogar na Lista(TListBox) os arquivos da pasta a enviar
essa função retorna os arquivos da pasta e está nas dicas do site}
{Nota: essa procedure não envia subpastas e está sem tratamento de exceção, ou seja, vc precisa melhorá-la
{Utilizo Delphi 7 e Indy 9, funcionou sem problemas, espero q ajude!}
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Envia_Pasta(´C:\Documents and Settings\Administrador\Desktop\ImagensA´, ´ImagensA´);
end;
Gostei + 0
05/02/2008
Warfighter
Até + :D
Gostei + 0
05/02/2008
Warfighter
Gostei + 0
05/02/2008
Tiago Rizzon
Se puder me explicar melhor...
Abração!
Gostei + 0
08/02/2008
Warfighter
Se puder me explicar melhor...
Abração![/quote:fc06544265]
tipo se eu fosse usar para trabalhar com todos arquivos da mesma extenção ex [b:fc06544265]*.jpeg [/b:fc06544265]como eu poderia fazer isso ?
Gostei + 0
08/02/2008
Tiago Rizzon
var
ARec: TSearchRec;
Res: Integer;
begin
if FDirectory[Length(FDirectory)] <> ´\´ then FDirectory := FDirectory + ´\´;
Result := TStringList.Create;
try
Res := FindFirst(FDirectory + Filter, faAnyFile or faArchive, ARec);
while Res = 0 do begin
if ((ARec.Attr and faArchive) = faAnyFile) or ((ARec.Attr and faArchive) = faArchive) then
if ShowFolder then Result.Add(FDirectory + ARec.Name) else Result.Add(ARec.Name);
Res := FindNext(ARec);
end;
FindClose(ARec);
except Result.Free; end;
end;
{declara a function no public ou private se quiser}
function ArquivosDaPasta(FDirectory, Filter: TFileName; ShowFolder:Boolean): TStringList;
{como usar, testa num TButton}
var
Lista: TStringList;
begin
Lista := TStringList.Create;
Lista.AddStrings(ArquivosDaPasta(´C:\Pasta1´, ´*.jpg´, False));
{...}
Lista.Free;
end;
Gostei + 0
09/02/2008
Warfighter
var
A: Integer;
Lista: TStringList;
begin
{aconselho q vc aqui, nesta linha, extraia o nome da pasta do parâmetro ´caminhoPasta´, assim não é necessário
chamar essa procedure passando 2 parâmetros... o parâmetro ´nomePasta´ vc usaria como variável apenas desta procedure,
no entanto, se vc quiser alterar o nome da pasta no provedor, não altera!}
Lista := TStringList.Create;
if caminhoPasta[Length(caminhoPasta)] <> ´\´ then caminhoPasta := caminhoPasta + ´\´;
IdFTP1.Connect(True, -1);
if not PastaExiste(nomePasta) then IdFTP1.MakeDir(nomePasta); {se a pasta já ñ existe, cria}
IdFTP1.ChangeDir(nomePasta); {entra na pasta para enviar os arquivos}
Lista.AddStrings(ArquivosDaPasta(caminhoPasta, ´*.jpg´, False)); {se quiser pode usar filtro, ou não!}
showmessage(inttostr(lista.count));
for A := 0 to Lista.Count -1 do IdFTP1.Put(caminhoPasta + Lista.Strings[A], Lista.Strings[A], True);
IdFTP1.Disconnect;
{coloca um indicador dentro de progresso dentro do loop ou no evento onWork da IdFTP1}
{Acima, é necessário vc criar a função PastaExiste - uso a mesma para arquivos, só não postei pq fiz de qualquer
maienra, acredito q vc possa utilizar alguma melhor...}
{A função ArquivosDaPasta, que usei acima serve apenas para jogar na Lista(TListBox) os arquivos da pasta a enviar
essa função retorna os arquivos da pasta e está nas dicas do site}
{Nota: essa procedure não envia subpastas e está sem tratamento de exceção, ou seja, vc precisa melhorá-la
{Utilizo Delphi 7 e Indy 9, funcionou sem problemas, espero q ajude!}
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Envia_Pasta(´C:\Documents and Settings\Administrador\Desktop\ImagensA´, ´ImagensA´);
end;[/quote:ba38393a0d]
Não consegui usar esse código corretamente, porque não sei fazer essas funções de verificar a pasta
quebrei a cabeça e nada de resolver esse problema :(
Pode me dizer qual funções eu coloco ae ? :wink:
Gostei + 0
10/02/2008
Warfighter
Gostei + 0
10/02/2008
Tiago Rizzon
Me dá teu e-mail q eu envio um exemplo dessa rotina...
Abraço!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)