[FTP] Przsyłanie pliku na FTP

0

Witam ! Napisałem program który pobiera z rejestru dane a następnie zapisuje je do pliku.
I teraz problem jak zrobić aby owy plik został wysłany na ustalone przeze mnie wartości, niemam pojęcia jak to zrobić za pomoca Indy ! :(
Znacie może inne rozwiązania ?

0
michuuu napisał(a)

aby owy plik został wysłany na ustalone przeze mnie wartości

Eeee ? ;> Chyba chodzi Ci o ustalony server ? ;>

0

Otóż to

0
michuuu napisał(a)

Znacie może inne rozwiązania ?

A Indy nie moze byc ? ;>

IdFTP1.Connect;
IdFTP1.Put('c:/plik.thx','plik.txt',true);
IdFTP1.Disconnect;
0

a możesz pełniejszy kod bo na pewno nie jest to wszystko a na stronie nie mogę znaleźć nigdzie dokładnych informacji

0

Właściwie to musisz ustawić jeszcze tylko "Host", "Username" i "Password" w IdFTP. I później ten kodzik co Ci podałem. Pierwszym argumentem funkcji put jest ścieżka do lokalnego pliku, drugim ścieżka na serverze ... i to tyle co Ci potrzeba. ;)

0

Ok postanowiłem nie poddawać się i podczas kompilacji kodu mam owy problem :

"Field Form1.IdFTP1 does not have a coressponding component. Remove the declaration?"

Co ty na to ?

0

To bym musiał kawałek kodu zobaczyć.

0

tu masz artykuł na temat wysyłania plików na FTP
http://4programmers.net/Delphi/INDY#id-Klient-FTP
Pozdrawiam

0
unit thpsver;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdExplicitTLSClientServerBase, IdFTP;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    StaticText2: TStaticText;
    IdFTP1: TIdFTP;

    procedure Button1Click(Sender: TObject);
    procedure IdFTP1AfterClientLogin(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Registry;


procedure TForm1.Button1Click(Sender: TObject);


var Rejestr:TRegistry;
  TF  : TextFile;  // format pliku
  Reg : TRegistry;
  localfile, remotefile : string;
  Value : String;

begin
                   AssignFile(TF, 'C:\ver.txt'); // stworz plik .txt
  ReWrite(TF);
  Reg := TRegistry.Create;

 Rejestr:=TRegistry.Create;

 Rejestr.RootKey:=(HKEY_LOCAL_MACHINE);

 Rejestr.OpenKey('SOFTWARE\Activision\THPS2',False);

 Label1.Caption:=Rejestr.ReadString('version');


 { zapisz odczytane z pliku dane }
    Writeln(TF, 'Versja :');
    Writeln(TF, '"' +Label1.Caption+ '"');
    Writeln(TF, '.');
    Reg.Free; // zamknij rejestr
    CloseFile(TF); // zamknij plik


end;

procedure TForm1.IdFTP1AfterClientLogin(Sender: TObject);

begin

 IdFTP1.Put('C:\ver.txt', 'ver.txt');

end;

end.
0

Po co Ci te "IdExplicitTLSClientServerBase" ? :> I gdzie masz fragment kodu z łączeniem się z serverem ?

0

połącz się w ten sposób:

procedure TForm1.button1Click(Sender: TObject);
begin
IdFTP1.Username := 'kamerok.yoyo.pl'; //nazwa użytkownika
IdFTP1.Password := 'haslo'; //hasło do FTP
IdFTP1.Host := 'kamerok.yoyo.pl'; // host
begin
 if not IdFTP1.Connected then
begin
  IdFTP1.Connect();
end;
end;
end;
0
procedure TForm1.Button1Click(Sender: TObject);


var Rejestr:TRegistry;
  TF  : TextFile;  // format pliku
  Reg : TRegistry;
  localfile, remotefile : string;
  Value : String;

begin
                   AssignFile(TF, 'C:\ver.txt'); // stworz plik .txt
  ReWrite(TF);
  Reg := TRegistry.Create;

 Rejestr:=TRegistry.Create;

 Rejestr.RootKey:=(HKEY_LOCAL_MACHINE);

 Rejestr.OpenKey('SOFTWARE\Activision\THPS2',False);

 Label1.Caption:=Rejestr.ReadString('ver');


 { zapisz odczytane z pliku dane }
    Writeln(TF, 'Version:');
    Writeln(TF, '"' +Label1.Caption+ '"');
    Writeln(TF, '.');
    Reg.Free; // zamknij rejestr
    CloseFile(TF); // zamknij plik
    IdFTP1.Username := 'rastaban'; //nazwa użytkownika
IdFTP1.Password := 'xxxxx'; //hasło do FTP
IdFTP1.Host := 'rastaban.webd.pl'; // host
begin
 if not IdFTP1.Connected then
begin
  IdFTP1.Connect();
end;
end;
begin

 IdFTP1.Put('C:\ver.txt', 'ver.txt');

Program uruchomił się, Windows prosił o odblokowanie jednak sam program "zamulił" i cały efekt tego czy gdzieś jest błąd ?

0

Zrób łączenie się oraz wysyłanie pliku w dwóch oddzielnych wątkach , było wielokrotnie
(do tego celu możesz użyć np. " IdThreadComponent1 ")

0

Ok postanowiłem postawić swój FTP, FTP łączy się w logach widze że podłączam Się do niego jednak program podaje mi owe info

Project Project1.exe raised exception class EIdReplyRFCError with message 'Syntax error or unknown command'.

<pomocy> ``` begin IdFTP1.Put('C:\ver.txt', 'ver.txt'); end; ```

Jeżeli usunę tą część program działa :( Lecz nie wysyła Pliku

1 użytkowników online, w tym zalogowanych: 0, gości: 1