AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi FTP upload ohne INDY ! Kann mir jemand das erklären ?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von eLse-maestro · begonnen am 14. Okt 2006 · letzter Beitrag vom 25. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
eLse-maestro

Registriert seit: 14. Okt 2006
24 Beiträge
 
#1

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

  Alt 14. Okt 2006, 22:34
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 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
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#2

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

  Alt 14. Okt 2006, 23:13
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
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
eLse-maestro

Registriert seit: 14. Okt 2006
24 Beiträge
 
#3

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

  Alt 16. Okt 2006, 17:46
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

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

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

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

  Alt 16. Okt 2006, 17:53
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
Andreas
  Mit Zitat antworten Zitat
eLse-maestro

Registriert seit: 14. Okt 2006
24 Beiträge
 
#5

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

  Alt 18. Okt 2006, 14:39
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;
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
  Mit Zitat antworten Zitat
hsbc

Registriert seit: 28. Jan 2004
Ort: Krems/Donau
404 Beiträge
 
Delphi 7 Professional
 
#6

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

  Alt 18. Okt 2006, 14:43
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
  Mit Zitat antworten Zitat
eLse-maestro

Registriert seit: 14. Okt 2006
24 Beiträge
 
#7

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

  Alt 18. Okt 2006, 15:14
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
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#8

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

  Alt 18. Okt 2006, 15:17
Such einmal hier im Forum nach FindFirst und FindNext.
Die Ergebnisse sollten Dich einer Lösung näher bringen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#9

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

  Alt 18. Okt 2006, 16:19
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!');
  Mit Zitat antworten Zitat
eLse-maestro

Registriert seit: 14. Okt 2006
24 Beiträge
 
#10

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

  Alt 19. Okt 2006, 21:10
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:56 Uhr.
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