Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi FTP upload ohne INDY ! Kann mir jemand das erklären ? (https://www.delphipraxis.net/79018-ftp-upload-ohne-indy-kann-mir-jemand-das-erklaeren.html)

eLse-maestro 14. Okt 2006 22:34


FTP upload ohne INDY ! Kann mir jemand das erklären ?
 
hey,
ich bin ganz neu in Delphi, & ich wollte ein programm machen das eine ganzen Ordner hochläd (inklusive inhalt ;) ) oder das es nur den Inhalt hochlädt dann aber noch einen Ordner erstellt..
Ich habe mich hier im forum schon umgeschaut .. & hier im forum bin ich dann irgendwie auf die seite gekommen :
Webseiten-Titel
hmm kapieren tu ich das nicht :D kann mir jemand einen anderen quellcode geben (der auch ganze ordner/inhalte) hochlädt ? & eklären ? dankeschön

Achja & ganz neben bei noch eine frage, ich hatte mal ein programm wo immer ein neuer text drin stand, dh. er wurde immer übers internet aktualiesiert also einer hat den geschrieben & in meinem programm stand der dann .. kann mir jemand sagen wie das geht ? oder wie ich befehle senden kann ?

PS:
Dieses Indy habe ich installiert .. aber ich kann es irgendwie nicht benutzen da kommt immer so ein fehler .. das & das nicht gefunden oder so .. bei uses glaub ich ..

naja danke euch allen die antworten

MFG
eLse

inherited 14. Okt 2006 23:13

Re: FTP upload ohne INDY ! Kann mir jemand das erklären ?
 
Das mit den Uses kommt, wenn du die Bibliothekspfade nicht oder falsch setzt
auf www.indyproject.org glaub ich gibt es auch einen installer der das alles fuer dich uebernimmt.
Ein solches Programm wie du es grad beschrieben hast habe ich mal geschrieben. BEi interessepn an mich

eLse-maestro 16. Okt 2006 17:46

Re: FTP upload ohne INDY ! Kann mir jemand das erklären ?
 
Soo ich weiß in der überschrift steht ohne INDY ^^ .. wenn ihr wollt mache ich ein neues Thema auf ..
auf der INDY seite kann man ja automatische installation machen .. dann drücke ich auf download & dann komme ich auf sone komische seite wo ich gar net weiß wo der download ist .. kann mir da jmd helfen ? oder einen direkt link posten?
hier wo der download steht (indy 10): indy 10
& das wenn ich auf automatik install drück : automatic
Ich habe auch schon manuell versucht zu installieren .. die icons oben in delphi werden angezeigt aber der findet manche uses plugins da net .. wie schon gesagt.

danke

PS:
ich benutze borland delphi 7 PERSONAL
falls euch weiter hilft :D

[edit]:
PPS:
@ inherited kannste mir das prog mal schicken ? oder den quellcode .. oder am besten die units & so ?? ^^ danke

shmia 16. Okt 2006 17:53

Re: FTP upload ohne INDY ! Kann mir jemand das erklären ?
 
Zitat:

Zitat von eLse-maestro
ich bin ganz neu in Delphi, & ich wollte ein programm machen das eine ganzen Ordner hochläd (inklusive inhalt ;) )

Sorry, dann würde ich aber an deiner Stelle mit etwas einfacheren Projekten beginnen.
Es bringt ja nix, wenn das Projekt zwar interessant ist, dir aber 95% an Know How für diese Projekt fehlt.
Wenn du's trotzdem nicht lassen möchtest; hier gibt's (fast) alles schon fix & fertig:
http://www.delphipraxis.net/internal...ct.php?t=53643

eLse-maestro 18. Okt 2006 14:39

Re: FTP upload ohne INDY ! Kann mir jemand das erklären ?
 
Danke euch .. aber ich habe auch bei den links nichts passendes gefunden .. ich bin hier in dem forum mal auf den code gestoßen
Delphi-Quellcode:
uses
  WinInet

function putfile(server, username, password, localfile, remotefile: string; port: word = 21): boolean;
var
  hopen, hconnect: HINTERNET;
begin
  hopen := InternetOpen('myagent', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
  hconnect := InternetConnect(hopen, pchar(server), port, pchar(username), pchar(password), INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
  Result := FtpPutFile(hconnect, pchar(localfile), pchar(remotefile), FTP_TRANSFER_TYPE_UNKNOWN, 0);
  InternetCloseHandle(hconnect);
end;
Delphi-Quellcode:
putfile('154.26.23.142', 'user5', 'password', 'C:\foobar.txt', '/html/foobar.txt')
Kann man da nicht einfach noch einbauen das man einen GANZEN ordner hochlädt bzw. den inhalt des ordners? Oder kann mir jemand eine liste geben wie das alles geht mit orner unbennen & so ?
aber wichtig ist das erstmal mit den ordner !
in batch ging das so weit ich weiß mit *.*
hat jemand eine ahnung ?
freue mich auf jede antwort !

mfG
else

hsbc 18. Okt 2006 14:43

Re: FTP upload ohne INDY ! Kann mir jemand das erklären ?
 
Hallo,

Anweisung für einen ganzen Ordner hochladen gibt es nicht. Du musst einfach in einer Schleife jede einzelne Datei deines Ordners hochladen.

mfg
Herbert

eLse-maestro 18. Okt 2006 15:14

Re: FTP upload ohne INDY ! Kann mir jemand das erklären ?
 
hmm ok .. aber ich weiß ja gar nicht wie die alle heißen die dateien .. kannst du mir villeicht eine schleife sagen womit ich alle vorhandenen dateien im ordner hochladen kann ?
danke

Klaus01 18. Okt 2006 15:17

Re: FTP upload ohne INDY ! Kann mir jemand das erklären ?
 
Such einmal hier im Forum nach FindFirst und FindNext.
Die Ergebnisse sollten Dich einer Lösung näher bringen.

Grüße
Klaus

ErazerZ 18. Okt 2006 16:19

Re: FTP upload ohne INDY ! Kann mir jemand das erklären ?
 
hey
ich hab diese funktion grad für dich gemacht, ist nicht ganz fertig, ich ändere es später wieder wenn ich wieder komme (falls ich fehler finde), ich muss jetzt wieder los


Edit:
Code geändert und getestet, alles funktioniert wunderbar :)

Delphi-Quellcode:
function UploadFolder(lpszServer, lpszUsername, lpszPassword, lpszLocalDirectory, lpszRemoteDirectory: String; wPort: Word = 21): Boolean;
const
  sErrorDirectoryUpload = 'Das Verzeichnis "%s" konnte nicht auf den Server geladen werden!';
  sErrorDirectoryCreate = 'Das Verzeichnis "%s" konnte nicht auf dem Server erstellt werden!';
  sErrorDirectorySet   = 'Es konnte nicht in das Verzeichnis "%s" gewechselt werden!';
  sErrorFileCreate     = 'Datei "%s%s" konnte nicht erstellt werden!';
var
  hOpen, hConnect: HINTERNET;
  function UploadDirectory(lpszPath, lpszRemote: String): Boolean;
  var
    lpFindFileData: TWIN32FindData;
    hFindFile: THandle;
    szLastDirectory: String;
  begin
    Result := False;
    lpszPath := IncludeTrailingPathDelimiter(lpszPath);
    // wir brauchen hier den Namen vom letzten Verzeichnis, also den den wir gerade durchsuchen, um dann FtpSetCurrentDIrectory
    // aufzurufen.
    lpszRemote := ExcludeTrailingPathDelimiter(lpszRemote);
    if LastDelimiter('\', lpszRemote) > 0 then
      szLastDirectory := Copy(lpszRemote, LastDelimiter('\', lpszRemote) +1, Length(lpszRemote))
    else
    if LastDelimiter('/', lpszRemote) > 0 then
      szLastDirectory := Copy(lpszRemote, LastDelimiter('/', lpszRemote) +1, Length(lpszRemote))
    else
      szLastDirectory := lpszRemote;
    lpszRemote := IncludeTrailingPathDelimiter(lpszRemote);

    if not FtpCreateDirectory(hConnect, PChar(szLastDirectory)) then
    begin
      // Verzeichnis konnte nicht erstellt werden, versuche noch in das Verzeichnis zu wechseln
      if not FtpSetCurrentDirectory(hConnect, PChar(szLastDirectory)) then
      begin
        MessageBox(HWND_DESKTOP, PChar(Format(sErrorDirectoryCreate, [szLastDirectory])), 'Error', MB_ICONERROR);
        Exit;
      end;
    end else
    begin
      // Verzeichnis setzen, in dem wir Arbeiten
      if not FtpSetCurrentDirectory(hConnect, PChar(szLastDirectory)) then
      begin
        MessageBox(HWND_DESKTOP, PChar(Format(sErrorDirectorySet, [szLastDirectory])), 'Error', MB_ICONERROR);
        Exit;
      end;
    end;
    // Prüfen ob das Verzeichnis auf dem lokalen PC existiert.
    if DirectoryExists(lpszPath) then
    begin
      hFindFile := FindFirstFile(PChar(lpszPath + '*.*'), lpFindFileData);
      if (hFindFile <> INVALID_HANDLE_VALUE) then
      begin
        repeat
          if ((String(lpFindFileData.cFileName) = '.') or (String(lpFindFileData.cFileName) = '..')) then
            continue;
          // Dateien vom Verzeichnis uploaden ...
          if (lpFindFileData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0) then
          begin
             if not FtpPutFile(hConnect,
                               PChar(Format('%s%s', [lpszPath, lpFindFileData.cFileName])),
                               PChar(Format('%s', [lpFindFileData.cFileName])), FTP_TRANSFER_TYPE_UNKNOWN, 0) then
            begin
              // Datei konnte nicht erstellt werden!
              MessageBox(HWND_DESKTOP, PChar(Format(sErrorFileCreate, [lpszRemote, lpFindFileData.cFileName])), 'Error', MB_ICONERROR);
              Windows.FindClose(hFindFile);
              Exit;
            end;
          end else
          // Ein Verzeichnis wurde gefunden also in das Verzeichnis wechseln und dort die Dateien suchen und die dann uploaden ..
          begin
            if not UploadDirectory(Format('%s%s', [lpszPath, lpFindFileData.cFileName]),
                                   Format('%s%s', [lpszRemote, lpFindFileData.cFileName])) then
            begin
              MessageBox(HWND_DESKTOP, PChar(Format(sErrorDirectoryUpload, [lpszPath])), 'Error', MB_ICONERROR);
              Exit;
            end;
          end;
        until not (FindNextFile(hFindFile, lpFindFileData));
        Windows.FindClose(hFindFile);
        // cd ..
        if not FtpSetCurrentDirectory(hConnect, '..') then
        begin
          MessageBox(HWND_DESKTOP, PChar(Format(sErrorDirectorySet, ['..'])), 'Error', MB_ICONERROR);
          Exit;
        end;
        Result := True;
      end;
    end;
  end;
begin
  Result := False;
  hOpen := InternetOpen('MyAgent', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
  if (hOpen <> nil) then
  begin
    hConnect := InternetConnect(hOpen, PChar(lpszServer), wPort, PChar(lpszUsername), PChar(lpszPassword),
                                INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
    if (hConnect <> nil) then
    begin
      Result := UploadDirectory(lpszLocalDirectory, lpszRemoteDirectory);
      InternetCloseHandle(hConnect);
      InternetCloseHandle(hOpen);
    end;
  end;
end;
Beispiel aufruf:
Delphi-Quellcode:
  if UploadFolder('meinserver.de', 'admin', 'r00t', 'c:\tmp', 'etc') then
    showmessage('Verzeichnis wurde auf den server geuppt!');

eLse-maestro 19. Okt 2006 21:10

Re: FTP upload ohne INDY ! Kann mir jemand das erklären ?
 
Ja danke für den code ! Respekt .. aber bei mir läufts nicht :( also code funzt aber der uppt nicht .. wass soll ich den bei "etc" reiin schreiben ich habe das einfach so genannt wie mein ordner .. aber der uppt NULL ;) danke trotzdem


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz