Avatar billede frifoed Nybegynder
21. april 2000 - 14:28 Der er 19 kommentarer og
1 løsning

Filoverførsel

Hej..
Jeg skal overføre filer over netværk og internet. Hvordan gøres dette? Jeg har Delphi 3 Client/Server med Fpiette's ICS komponenter.
Avatar billede lrj Nybegynder
21. april 2000 - 15:45 #1
FTP står for File Transfer Protocol, og er normalt det man bruger til at overføre filer med, da den er temmelig fiks :o)

Der er en FTP-klient komponent i ICS, men det kræver lidt programmering at bruge den. Men den er helt klart at foretrække frem for Delphi's medfølgende...
Avatar billede frifoed Nybegynder
21. april 2000 - 19:23 #2
Ja det vidste jeg....
Men hvordan bruger man den? Et lille eksempel ville være lækkert :-)
Avatar billede lrj Nybegynder
21. april 2000 - 22:25 #3
Kan anvendes på 2 måder: Synkron og asynkron. Synkron er langt den nemmeste måde at starte med... Prøv at kigge lidt i det medfølgende eksempel - det er faktisk ret fedt!
Avatar billede frifoed Nybegynder
22. april 2000 - 10:26 #4
Vil du ikke lave lille eksempel?
Avatar billede lrj Nybegynder
24. april 2000 - 17:38 #5
Det tager vel ca. ½ time at sætte sig ind i?

var
  FtpClient1        : TFtpClient;
begin
  FtpClient1:= TFtpClient.Create(form1);
  FtpClient1.HostName:='localhost';
  FtpClient1.Port:='21';
  FtpClient1.UserName:='anonymous';
  FtpClient1.PassWord:='test@foo.com';
  FtpClient1.Connect;
  sleep(2000);//forbindelse opnået - gør noget med den...
  FtpClient1.Quit;
Avatar billede lrj Nybegynder
24. april 2000 - 17:38 #6
Eksemplet er med synkron forbindelse - ret nemt at gå til..
Avatar billede frifoed Nybegynder
29. april 2000 - 08:07 #7
Mit problem ligger ikke på client siden men på server siden, når filen skal modtages og lagres på harddisken.
Avatar billede lrj Nybegynder
02. maj 2000 - 13:25 #8
Aha - kunne være ret fedt hvis du havde sagt...

Så skal du jo til at lave en ftp-server. Det er straks værre :o)

Følger der ikke et eksempel med ICS? ELlers kan jeg anbefale at du læser FTP FTC'en...

Men du skal jo til at lave et virtuelt filsystem "/upload, /usr/" og hvad har vi, brugeradministration (login/password/hastighedsbegrænsninger), administratorinterface - jeg kunne blive ved.

Brug hellere en eksisterende ftp-server. Det bliver du gladere for i længden - og der er mange gratis derude..
Avatar billede lrj Nybegynder
02. maj 2000 - 13:48 #9
Det hedder ikke FTC, men RCF...
Avatar billede frifoed Nybegynder
02. maj 2000 - 16:53 #10
Der er desværre fejl i eksemplerne med ICS :-) Jeg kan ikke bruge et eksisterende program da mit program egentlig ikke er et normalt FTP-server program.
Avatar billede lrj Nybegynder
02. maj 2000 - 17:40 #11
frifoed - så er spørgsmålet om det ikke ville være smartere at bruge en standard alligevel - med mindre der er en MEGET god grund til ikke at bruge noget eksisterende!

FTP er en gennemprøvet standard og det vil nok være svært at lave noget lige så godt indenfor en overskuelig tidshorisont.

Men lad da høre hvad det skal bruges til, så kan jeg måske komme med et alternativt løsningsforslag.
Avatar billede frifoed Nybegynder
02. maj 2000 - 18:33 #12
humm..
Overførsel af et billede over et netværk (dette billede er et screenshot). Jeg havde heller tænkt mig at opfinde en ny filoverførsels protocol.
Avatar billede frifoed Nybegynder
04. maj 2000 - 15:11 #13
Hvad er forskellen mellem Synchron og asynchron overførsel?
Avatar billede frifoed Nybegynder
04. maj 2000 - 16:11 #14
Hey irj, hvad er problemet med denne produre:

Procedure FtpUpload(var localfile, remotefile : String);
var
  Ftp: TFtp;
begin
  Ftp:= TFtp.Create(form1);
  Ftp.RemoteHost:='www.sygnia.subnet.dk';
  Ftp.RemotePort:=21;
  Ftp.UserId:='sygnia';
  Ftp.Password:='visygnia';
  Ftp.Connect('www.sygnia.subnet.dk', 21);
  Sleep(4000);
  ftp.PutFile(localfile, remotefile);
end;
Avatar billede lrj Nybegynder
04. maj 2000 - 16:54 #15
linjen Ftp.Connect('www.sygnia.subnet.dk', 21) burde da ikke være nødvendig?

Du skal jo bare bruge connect - så forbinder den - ligesom i mit eksempel. Det virkede - så du kan bruge det ret direkte.

Forskellen mellem synkron og asynkron er følgende: i synkron tilstand (ligesom det du har gjort) kalder du bare en kommando efter en anden og ftp-objektet returnerer først når den er færdig og har modtaget svar fra serveren. I asynkron returnerer den derimod med det samme, og så er det det bliver tricky.

Du skal så holde styr på din tilstand - kan fx. være defineret som:

Tstate=(stConnecting,stGettingFile,stDisconnecting) osv...

var
  state: tstate


så gør du så følgende når brugeren vil connecte til en server:

ftp.username... og alle de andre ting du lige sætter op, som ovenfor
state := stConnecting;
ftp.asynConn; (mener jeg den hedder)


så er der en event på ftp-komponenten der hedder OnDataAvailable (vistnok)

her checker du så:

case state of

stConnecting: ftp.login;
stDisconnecting: ftp.disconnect;

end;

eller hvad der nu er passende. Du skal holde tungen lige i munden og sørge for at få defineret dine states fra starten.

Det er i asynkron programmering at du kan lave de hurtigste programmer, men det kræver samtidig også meget mere af dig.
Avatar billede frifoed Nybegynder
04. maj 2000 - 17:19 #16
Okay tak..
Jeg eksperimenterer lidt :-)
Avatar billede frifoed Nybegynder
04. maj 2000 - 17:24 #17
Det er heller ikke connect-fasen der volder mig problemer, det er den efterfølgende "PutFile" -Kommando.
Avatar billede lrj Nybegynder
04. maj 2000 - 17:38 #18
vær sikker på at du er skiftet til et bibliotek du må uploade på på serveren... pwd-kommandoen, måske også lidt cd-kommandoen :)
Avatar billede frifoed Nybegynder
04. maj 2000 - 17:49 #19
Yes nu kan jeg downloade :-)
Min primære fejl var at jeg ikke har brugt ICS men Delphi's inbyggede FTP-komponent og den fungerer ad helvede til!
Yes nu virker upload også :-)
Du er sgu en god hjælp!
Avatar billede lrj Nybegynder
04. maj 2000 - 23:11 #20
Hehe, anytime :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester