Entwickler-Ecke

Internet / Netzwerk - Datei auf Verfügbarkeit prüfen


tc4xe - Do 15.02.07 21:13
Titel: Datei auf Verfügbarkeit prüfen
Hallo liebe Mitglieder!

Ich möchte bei einer Datei z.B. update.txt auf Verfügbarkeit prüfen.

z.B. sollte der Pfad so aussehen: http://www.abcd.com/update.txt

Wie kann ich am besten die Datei auf Verfügbarkeit prüfen und den Inhalt in eine String varieble schreiben?


jaenicke - Do 15.02.07 21:16

Sieh dir mal TStringStream an...
Ob das das Sinnvollste für dein Problem ist, weiß ich nicht, aber da bekommst du auf jeden Fall den gesamten Inhalt als String.


tc4xe - Do 15.02.07 21:24

Danke, werde ich mir mal ansehen.
Hast du eine Iddee wie ich auf Verfügbarkeit prüfen könnte?


jaenicke - Do 15.02.07 21:25

Ich weiß nicht genau, was du meinst. Meinst du ob die Datei existiert?
--> FileExists
Oder ob du drauf zugreifen kannst?
Das bekommst du dann beim Zugriffsversuch mit.


tc4xe - Do 15.02.07 21:44

Ob die Datei z.B. hier existiert: http://www.abcd.com/update.txt


Delete - Do 15.02.07 21:46

propier es mal via FTP, da kannste prüfen ob eine datei existiert.

ob fileexists, auch das HTTP protokoll unterstützt oder nur local läuft, kann ich dir nicht sagen.
<HTH>


jaenicke - Do 15.02.07 21:51

:oops: Entschuldigung, ich war nicht ganz bei der Sache. Ich hab das gar nicht als Internetadresse wahrgenommen.

Das geht am besten mit den Indy-Komponenten. Falls du die bereits installiert hast (bei neueren Delphi-Versionen sind die schon dabei), dann sollte das hier gleich gehen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
uses
  IdHttp;

// ...

var
  uIndy: TIdHttp;
  tmpString: String;
begin
  uIndy := TIdHTTP.Create(Form1);
  uIndy.AllowCookies := False;
  uIndy.HandleRedirects := True;
  uIndy.HTTPOptions := [hoForceEncodeParams];
  uIndy.ProxyParams.BasicAuthentication := False;
  uIndy.Request.Accept := 'text/html, */*';
  uIndy.Request.BasicAuthentication := False;

  tmpString := uIndy.Get('http://www.xa.com/update.txt');
  ShowMessage(tmpString);

  uIndy.Free;
end;
Wenn die Datei nicht existiert ist glaube ich der String einfach leer.

FTP ist nicht passend, weil dann Benutzername und Passwort in der Exe stehen müssen.

Und FileExists geht genauso wenig wie TFileStream. Wie gesagt: Ich war nicht bei der Sache und hab nicht gesehen, dass es ums Internet geht...
Tut mir leid. :oops:


Delete - Fr 16.02.07 00:19

bei anonymous ftp braucht man kein passwort und keinen account. aufrufen kann man das ganze z.b. über indy oder man nimmt 'n externes FTP programm (shellexecute) zu hilfe. der unterschied ist, dass FTP über port 21 und http über port 80 läuft.

PS: bei einem httpget, wird bei fehlen der quelldatei die fehlermeldung abgespeichert, da müsstest du 'n loopback installieren, damit du mitbekommst, dass etwas schiefgelaufen ist. oder du wertest die heruntergeladene datei dann entsprechend aus, viel spass dabei ;-) . wie man das mit http, sonst prüfen kann, kann ich dir leider nicht sagen. bei FTP gibts jedenfalls 'n entsprechendes commando, wenn es beim server zugelassen wurde. <HTH>