czy plik istnieje na serwerze??

0

Wlansie potrzebuje tego aby sprawdzic czy istnieje plik na serwerze i nieiwem jak to mam zrobic :( prosze pomozcie

0

na jakim serwerze? FTP czy HTTP czy jeszcze coś innego?

0

sorrki ze nieodpisalem predzej ale mam duzy problem z netem:( a czy jest duza roznica miedzy http a ftp w kodzie??:)

0

w http nie mozna zagladac do plikow chyba ze sie wlamiesz ale sprawdzic czy istnieje to sie chyba da

0

w http nie mozna zagladac do plikow

za pośrednictwem protokołów HTTP jak i FTP można
ściągać pliki, co rozumiesz pod pojęciem zaglądania ? :-D

chyba ze sie wlamiesz

...

BTW: Cały ten wątek jest niezły :-D

0

ok to w koncu jak sprawdic czy plik istnieje na serwerze? n.: czy plik na www.serwer.pl/plik.zip istnieje:P moze mi ktos pomoc:) czekam na odpowiedz!!

0

Z tego co wiem, z każdym serwerem www da się połączyć przez protokół FTP i tak naprawdę to za jego pośrednictwem ściągamy pliki. Przykładowo jak mamy na stronie odnośnik do plik.zip, znajdującego się na tym samym serwerze, to jak go klikniemy, to automatycznie łączymy się z serwerem poprzez FTP, by ten plik ściągnąć.
Co z tego wynika? Że prawdopodobnie możesz za pomocą np. IdFTP z pakietu Indy (lub TFTP czy jakoś tak z Client/Server Solution Delphi) połączyć się z serwerem i komendą List uzyskać listę wszystkich plików. Następnie tylko w TStringList szukać danego pliku. Mam nadzieję, że ta wskazówka w czymś pomoże...
[dopisane]
A jak chodzi o "zaglądanie" do plików, to możesz, pod warunkiem, że nie jest to serwer php, który nie pozwala na przeglądanie kodu (Co by się działo, gdyby każdy użytkownik internetu mógł zajrzeć do kodu jakiejś stronki z MySQL i przeczytać hasła dostępu do baz danych? ;p)

0

OK dzieki sprobuje:P zoabczymy co mi wyjdzie:) hehe

0

Z tego co wiem, z każdym serwerem www da się połączyć przez protokół FTP i tak naprawdę to za jego pośrednictwem ściągamy pliki. Przykładowo jak mamy na stronie odnośnik do plik.zip, znajdującego się na tym samym serwerze, to jak go klikniemy...

Niestety Adamie, ftp i http to dwie odrębne usługi które mogą, lecz nie muszą współistnieć na jednym serwrze. Jeśli nawet, to aby połączyć się z ftp trzeba znać login i hasło (zależy od konfiguracji)

0

czyli jakies propozycje aby z tej sytuacji wyjsc??

0

czyli jakies propozycje aby z tej sytuacji wyjsc??

No tak jak napisal Adam zeby pobrac liste plikow z serwera ftp jak ma to byc przez ftp A jesli to ma byc przez http to mozna to zrobic wykoizystujac http://4programmers.net/view_faq.html?id=8 jak jest blad sciagania pliku to chyba go nie ma :) Tak przynajmniej mozna zalozyc :) I jeszcze chyba moglbys uzyc HttpGet i nim tez sprawdzic :)

0

ok to w koncu jak sprawdic czy plik istnieje na serwerze? n.: czy plik na www.serwer.pl/plik.zip istnieje:P moze mi ktos pomoc:) czekam na odpowiedz!!

No dobra, naskrobałem przykład z HTTP, jesli coś źle
zrobiłem to sorry, jeszcze się na tym nie znam dobrze...

program Project1;

uses
  Windows, WinSock;

function Host2Addr(s: String): Integer;
var
  He : PHostEnt;
begin
  Result := inet_addr(PChar(s));
  if Result <> INADDR_NONE then Exit;
  He := GetHostByName(PChar(s));
  if He <> nil then
    Move(He^.h_addr_list^^,Result,He^.h_length);
end;

function SOpen(var Sck: TSocket; Host: String;
  Port: Integer): Boolean;
var
  SckAI : TSockAddrIn;
begin
  Result := False;
  Sck := Socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
  if Sck = INVALID_SOCKET then Exit;
  SckAI.sin_family := AF_INET;
  SckAI.sin_port := HTons(Port);
  SckAI.sin_addr.s_addr := Host2Addr(Host);
  Result := Connect(Sck,SckAI,SizeOf(SckAI)) <> SOCKET_ERROR;
  if not Result then CloseSocket(Sck);
end;

function SClose(Sck: TSocket): Boolean;
begin
  Result := (ShutDown(Sck,2) <> SOCKET_ERROR)
    and (CloseSocket(Sck) <> SOCKET_ERROR);
end;

function SRead(var Sck: TSocket; var Str: String;
  Size: Integer): Integer;
begin
  SetLength(Str,Size);
  Result := Recv(Sck,Str[1],Length(Str),0);
end;

function SWrite(var Sck: TSocket; Str: String): Integer;
begin
  Result := Send(Sck,Str[1],Length(Str),0);
end;

function HttpFileExists(Url: String): Boolean;
const
  CrLf = #13#10;
var
  Sock : TSocket;
  WSAData : TWSAData;
  Buf, Str : String;
  i : Integer;
begin
  i := Pos('//',Url);
  if i > 0 then Delete(Url,1,i+1);
  i := Pos('/',Url) - 1;
  Str := Copy(Url,1,i);
  Delete(Url,1,i);
  WSAStartUp(257,WSAData);
  if SOpen(Sock,Str,80) then begin
    SWrite(Sock,'HEAD ' + Url + ' HTTP/1.0' + CrLf);
    SWrite(Sock,'Host: ' + Str + CrLf + CrLf);
    Str := '';
    repeat
      i := SRead(Sock,Buf,256);
      if i <> 256 then SetLength(Buf,i);
      Str := Str + Buf;
    until not (i > 0);
    SClose(Sock);
  end
  else MessageBox(0,'Błąd połączenia',nil,0);
  WSACleanUp();
  Result := Pos('200 OK',Str) > 0;
end;

begin
  if HttpFileExists('http://server.pl/plik.zip') then
    MessageBox(0,'Plik istnieje',nil,0)
  else
    MessageBox(0,'Plik nie istnieje',nil,0);
end.

[<font color="blue">dopisane</span>]

Do moderatorów: chyba coś źle z highlighterem,
kiedy wstawiam powyższy kod w tagi DELPHI to
robi się kaszana...

//od moderatorow - wsie w paradkie - lofix

1 użytkowników online, w tym zalogowanych: 0, gości: 1