GARANTIR DESCONTO

Fórum idFTP1 Upload de Pasta ? #352997

04/02/2008

0

Não estou conseguindo fazer o upload de uma pasta com o idFTP1

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

Warfighter

Responder

Posts

04/02/2008

Tiago Rizzon

Amigo, estou meio na corrida agora, mas acredito que não é complicado criar uma rotina que:

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!


Responder

Gostei + 0

04/02/2008

Warfighter

[quote:483e2ff039=´Tiago Rizzon´]Amigo, estou meio na corrida agora, mas acredito que não é complicado criar uma rotina que:

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:


Responder

Gostei + 0

04/02/2008

Tiago Rizzon

Oi! Chego em casa às 22h, aí, em seguida posto o código por aqui...

Abração

;-)


Responder

Gostei + 0

04/02/2008

Warfighter

[quote:3bfb55d111=´Tiago Rizzon´]Oi! Chego em casa às 22h, aí, em seguida posto o código por aqui...

Abração

;-)[/quote:3bfb55d111]

Blz :wink:

Qualquer coisa alguém souber posta ae :D


Responder

Gostei + 0

04/02/2008

Tiago Rizzon

procedure TForm1.Envia_Pasta(caminhoPasta, nomePasta: String);
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;


Responder

Gostei + 0

05/02/2008

Warfighter

Vlw :wink:

Até + :D


Responder

Gostei + 0

05/02/2008

Warfighter

Como usar varios arquivos de uma mesma extenção ex [b:0e3972fafe]*.jpeg [/b:0e3972fafe]para uma outro code ?


Responder

Gostei + 0

05/02/2008

Tiago Rizzon

Oi! Desculpa, não entendi a última questão!!

Se puder me explicar melhor...

Abração!


Responder

Gostei + 0

08/02/2008

Warfighter

[quote:fc06544265=´Tiago Rizzon´]Oi! Desculpa, não entendi a última questão!!

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 ?


Responder

Gostei + 0

08/02/2008

Tiago Rizzon

function TForm1.ArquivosDaPasta(FDirectory, Filter: TFileName; ShowFolder:Boolean): TStringList;
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;


Responder

Gostei + 0

09/02/2008

Warfighter

[quote:ba38393a0d=´Tiago Rizzon´]procedure TForm1.Envia_Pasta(caminhoPasta, nomePasta: String);
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:


Responder

Gostei + 0

10/02/2008

Warfighter

????? :?: :?:


Responder

Gostei + 0

10/02/2008

Tiago Rizzon

Oi!

Me dá teu e-mail q eu envio um exemplo dessa rotina...

Abraço!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar