Entwickler-Ecke

Internet / Netzwerk - if FileExists('http://.../datei.dat') then tuewas;


cbs - Di 02.07.02 17:44
Titel: if FileExists('http://.../datei.dat') then tuewas;
Tag auch,

sagt mal gibbed eine möglichkeit festzustellen ob eine Datei im internet existiert ohne zu testen ob man die datei runterladen kann (also z.B. auf Error 404 reagieren)? die url ist bekannt (ich will kein blödsinn damit anfangen, eben nur testen ob eine bestimmte datei existiert).

wäre toll wenn da jemand ne idee hat.

nen schönen tag noch, cbs

PS: die Themenüberschrift soll sich eben nur auf das thema beziehen, ich weiß das das so nicht geht :)


crip - Do 04.07.02 14:06

Kannn jetzt hard was dazu sagen, aber ich glaube du wirst nie sicher sein koennen, dass die Datei nit gibt, denn es werden bestimmt nicht alle dateien angezeigt wegen der Berechtigung. Obwohl wahrscheinlich moechtest du legale Sachen mit dem Prog machen :lol: Ich glaub ich kann dir da helfen guck ma morgen noch mal hier vorbei


Steffer - So 07.07.02 23:50

Lies doch einfach die Grösse der Datei. Hast du einen positiven Wert, ist die Datei vorhanden.


b.brecht - So 14.07.02 23:37

ich würde es so machen :


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
uses 
  URLMon, ShellApi; 

function DownloadFile(SourceFile, DestFile: string): Boolean; 
begin 
  try 
    Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0; 
  except 
    Result := False; 
  end; 
end; uses 
  URLMon, ShellApi; 

function checkit(url,dest:string):boolean;
begin
if DownloadFile(url,dest) then
  begin
  Result:=true;
  DeleteFile(dest);
  end
  else
  Result:=false;
end;


Bitte für url eine URL wählen (http://www.google.com/intl/de/images/home_title.gif)
und das Zeilverzeichnis passend machen (c:\temp\google-image.gif).
So funktioniert es auf jeden Fall!


DeCodeGuru - Mo 15.07.02 09:39

Hi,

guck dir mal folgendes an: http://www.auq.de/viewtopic.php?t=195

Dort habe ich Quellcode gepostet, wie man eine Datei mit URLDownloadToFile (mit Fortschrittsanzeige runterladen kann).

Guck dir vor allem folgende Quellcodestelle an:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
function cDownloadStatusCallback.OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG; szStatusText: LPCWSTR): HResult; 
begin 
  case ulStatusCode of 
    BINDSTATUS_FINDINGRESOURCE: 
    begin 
      Form1.Label1.Caption := 'Datei wurde gefunden...'; 
      if (usercancel) then 
      begin 
        Result := E_ABORT; 
        exit; 
      end; 
    end; 
    BINDSTATUS_CONNECTING: 
    begin 
      Form1.Label1.Caption := 'Es wird verbunden...'; 
      if (usercancel) then 
      begin 
        Result := E_ABORT; 
        exit; 
      end; 
    end; 
    BINDSTATUS_BEGINDOWNLOADDATA: 
    begin 
      Form1.Gauge1.Progress := 0; 
      Form1.Label1.Caption := 'Der Download wurde gestartet...'; 
      if (UserCancel) then 
      begin 
        Result := E_ABORT; 
        exit; 
      end; 
    end; 
    BINDSTATUS_DOWNLOADINGDATA: 
    begin 
      Form1.Gauge1.Progress := MulDiv(ulProgress,100,ulProgressMax); 
      Form1.Label1.Caption := 'Datei wird heruntergeladen...'; 
      if (UserCancel) then 
      begin 
        Result := E_ABORT; exit; 
      end; 
    end; 
    BINDSTATUS_ENDDOWNLOADDATA: 
    begin 
      Form1.Label1.Caption := 'Download wurd beendet...'; 
    end; 
  end; 
  Application.ProcessMessages; 

  Result := S_OK; 
end;


Achte dabei besonders auf BINDSTATUS_FINDINGRESOURCE. Wie man sieht tritt das Ereignis auf, wenn die Datei gefunden wurde. Also kannst du dementsprechend reagieren.

Ich hoffe ich konnte dir helfen!!


cbs - Mi 17.07.02 21:40

tag auch,

danke für die tollen antworten, sorry das ich nicht geantwortet habe ich war im urlaub, ich werts gleich mal ausprobieren (aber jetzt heißt es erstma koffer auspacken und emails lesen :lol: )