![]() |
Existiert Datei?
|
Re: Existiert Datei?
![]() |
Re: Existiert Datei?
Zitat:
|
Re: Existiert Datei?
Hab keinen Apache gerade zur Hand, wenn sich die Datei aber im www-Root des Webservers (also localhost oder 127.0.0.1) befindet warum sollte es nicht gehen ? :?:
|
Re: Existiert Datei?
Heavy.. cool :thumb: danke
|
Re: Existiert Datei?
Einfach nur FileExists?
Vorher muss die Konfigurationsdatei des HTTP Servers untersucht werden. Das zum URL passende virtuelle Verzeichnis (oder rootdir) muss ausfindig gemacht werden. Apache, Sambar, PWS, IIS? Jeder Server verlangt da eine andere Vorgehensweise. Das wird schon etwas teurer als ein simpler Aufruf von FileExists. Eine Alternative könnte UrlExists() sein: ![]() Grüße vom marabu |
Re: Existiert Datei?
Zitat:
Wenn ich "http://127.0.0.1/test.txt" in den Explorer eingebe zeigt er mir die Datei an. Warum sollte FileExists das nicht auch einfach können bzw. zurückgeben ob die Datei vorhanden ist ? |
Re: Existiert Datei?
Hi,
die Funktion FileExists gibt bei mir für Dateien auf localhost False zurück. Also der Windows Explorer ist sehr eng mit dem Inernet Explorer verbunden, da wird einem viel Arbeit im Hintergrund abgenommen. Windows erkennt wohl, dass es eine URL ist und handelt dementsprechend. mfG mirage228 |
Re: Existiert Datei?
Ok, dann hab ich Windows wieder zuviel zugedacht... :oops:
|
Re: Existiert Datei?
Hi folks,
die function FileExists() ist nicht etwa besonders clever - eher das Gegenteil ist der Fall. Die merkt gar nicht, dass kein UNC-Name sondern ein URL übergeben wird. Wenn der IE den Inhalt der Datei "test.txt" anzeigt, dann deshalb, weil er für bestimmte MIME Typen bereits integrierten Support mitbringt, für andere muss ich eine helper application registrieren. marabu |
Re: Existiert Datei?
mist.. also fileexists funzt definitiv nicht... kann erst später die anderen testen.. der HSV hat in München gewonnen und das kann ich mir in der Sportschau nich entgehen lassen...
|
Re: Existiert Datei?
FileExists kann gar nicht funktionieren weil FileExists intern ein FindFirst macht und das arbeitet nunmal nicht auf HTTP-Basis. Wäre ja auch schlimm wenn jeder den inhalt auflisten könnte der auf meinem webspace liegt.
|
Re: Existiert Datei?
So dieser Code aus dem anderen thread von marabu funktioniert perfekt.
Delphi-Quellcode:
nurnoch eine kleine Frage: Welche Werte kann Request.RespondCode annehmen und wofür stehen die
function UrlCheck(sUrl: String; bAllowRedirects: Boolean = false): Integer;
begin with TidHTTP.Create(nil) do try try HandleRedirects := bAllowRedirects; Head(sUrl); Result := Response.ResponseCode; finally Free; end; except Result := GetLastError; end; end; begin if UrlCheck('http://www.delphipraxis.net', true) = 200 then ShowMessage('!') else ShowMessage('?'); end; THX schonmal an alle |
Re: Existiert Datei?
Response-Code kann alle Fehlercodes haben die es eben gibt. 404 wenn die Seite nicht gefunden wird und etliche andere wenn zum Beispiel der Zugriff verweigert wird. Das alles ist für das HTTP-Protokoll definiert. Du müsstest also mal eine Liste der Fehlercodes des HTTP-Protokolls suchen.
Hier mal eine Seite mit einem Link zum Protokoll welches nochmehr fehlercodes enthält: ![]() |
Re: Existiert Datei?
cool danke :thumb:
|
AW: Existiert Datei?
Aufgrund einiger Problemchen hier nocheine Variante:
Delphi-Quellcode:
uses
IdHeaderList, IdHTTP; type TCheckHeadersAvailable = class class procedure Check(Sender: TObject; AHeaders: TIdHeaderList; var VContinue: Boolean); end; class procedure TCheckHeadersAvailable.Check(Sender: TObject; AHeaders: TIdHeaderList; var VContinue: Boolean); begin VContinue := False; end; function UrlCheck(sUrl: String; bAllowRedirects: Boolean = false): Integer; begin with TIdHTTP.Create(nil) do try HandleRedirects := bAllowRedirects; OnHeadersAvailable := TCheckHeadersAvailable.Check; try Head(sUrl); Result := Response.ResponseCode; except if (Response.ResponseCode >= 400) and (Response.ResponseCode < 600) then Result := Response.ResponseCode else Result := 503; end; finally Free; end; end;
Delphi-Quellcode:
oder
procedure TForm5.Button1Click(Sender: TObject);
var C: Integer; begin C := UrlCheck('http://www.google.de/mdklsandksj.txt', True); if C = 200 then ShowMessage('OK') else ShowMessage(Format('Fehler %d', [C])); end;
Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
begin if UrlCheck('http://www.google.de/mdklsandksj.txt', True) = 200 then ShowMessage('OK') else ShowMessage('Fehler'); end; Ach ja, GetLastError (siehe Post 13) als Result ist keine gute Idee. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz