![]() |
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 : ![]() 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 |
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 ![]() Ein solches Programm wie du es grad beschrieben hast habe ich mal geschrieben. BEi interessepn an mich |
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): ![]() & das wenn ich auf automatik install drück : ![]() 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 |
Re: FTP upload ohne INDY ! Kann mir jemand das erklären ?
Zitat:
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: ![]() |
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:
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 ?
putfile('154.26.23.142', 'user5', 'password', 'C:\foobar.txt', '/html/foobar.txt')
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 |
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 |
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 |
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 |
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:
Beispiel aufruf:
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;
Delphi-Quellcode:
if UploadFolder('meinserver.de', 'admin', 'r00t', 'c:\tmp', 'etc') then
showmessage('Verzeichnis wurde auf den server geuppt!'); |
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 07:27 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 by Thomas Breitkreuz