Entwickler-Ecke

Dateizugriff - Datei von Server Kopieren


DecKeL - Di 18.12.07 16:10
Titel: Datei von Server Kopieren
Hallo Forum,

Ich will mit CopyFile eine Datei aus einer URL Kopieren.
Das Funzt aber nicht. Weiß jemand vielleicht warum die CopyFile Funktion das nicht kann, oder kennt jemand eine Funktion mit der das gehen könnte?

Hier mein Beispiel

Delphi-Quelltext
1:
CopyFile('http://www.test.de/test/test.php''c:\test.php', TRUE);                    


Beispiel 2:
Vielleicht kennt jemand die CopyFolder Funktion von euch, aber mit der Funktioniert es auch nciht.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
function TForm1.CopyFolder(aSource, aDest: String): Boolean;
var
  FS: TSHFileopStruct;
Begin
  FillChar (FS, SizeOf (FS), 0);

  With FS Do
    Begin
      wFunc := FO_COPY;
      pFrom := PChar (aSource + #0);
      pTo := PChar (aDest + #0);
    End;

  CopyFolder := SHFileOperation (FS) = 0;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
CopyFolder('http://www.Test.de/test/test.php''c:\test.php');

end;


Bei Beispiel 2 kommt folgender Fehler: Datei kann nicht Kopiert werden: die Quelldatei oder vom Quelldatenträger kann nicht gelesen werden.


alias5000 - Di 18.12.07 16:40

Du könntest sowas via HTTP lösen. Stichworte dafür wären:
Suche in der Entwickler-Ecke TIDHTTP GET. Das ist die Methode, um mit der Komponente TIdHTTP aus der Indy-Sammlung eine Datei vom Server abzufragen. Allerdings musst du bei php-Skripten aufpassen. Weil diese werden vor dem Aufruf ggf. noch interpretiert und damit erhälst du ggf. nicht die auf dem Server befindliche Datei.

Per FTP würdest du an das Original kommen, aber dafür brauchst du i.d.R. dann Zugangspasswörter, die natürlich nicht von fremden Servern bekommen wirst. Ich glaube nicht, dass es bei php-Skripten, die interpretiert werden, eine Möglichkeit gibt, an das Original zu kommen, aber ich möchte es nicht zu 100% ausschließen.

Gruß
alias5000


DecKeL - Di 18.12.07 16:46

Das war nur ein Beispiel, ich will gar keine PHP-Skrit Runterladen, sonder ExeDateien, die da liegen.
Müsste das dann gehen, wenn der Pfad dann z.B so aussehn würde??

Quelltext
1:
http://www.test.de/test/test.exe                    


alias5000 - Di 18.12.07 16:47

jop, wenn die Zugriffsrechte dafür auf dem Server nicht verwehrt sind, geht das. Kannst du aber einfach testen, in dem zu diese URL einfach mal in deinen Browser eingibst.

Gruß
Marten

(und wenn das dein eigener Server ist, kannst du beim FTP eh den CHMOD festlegen)


DecKeL - Di 18.12.07 16:49

sry, wenn ich nochmal so dumm frage, aber dann brauche ich die Indy-Komponente ja auch nicht?
Der hat das dann nur nicht gemacht, weil das eine *.php Skript/datei war, mit der ich das getestet habe???


alias5000 - Di 18.12.07 16:56

Ne, da hab ich mich ein wenig verkünstelt mit.
Um per HTTP die daten herunterzuladen hatte ich schon die Indys empfohlen (TIdHTTP).

Gruß
alias5000


DecKeL - Di 18.12.07 17:00

ok, dann werde ich es mit der Komponente versuchen.
Danke für die schnellen ANtworten. ich schreibe, wenn ich das Problem Gelöst habe


DecKeL - Di 18.12.07 23:07

wer hätte es auch andrs erwartet.
mit der Indy Kompnente geht das Prima. Danke!!!