Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   mit opendialog file auswählen und zum ftp senden? (https://www.delphipraxis.net/197418-mit-opendialog-file-auswaehlen-und-zum-ftp-senden.html)

Reiter0303 5. Aug 2018 14:36

mit opendialog file auswählen und zum ftp senden?
 
hallo, stehe gerade etwas auf dem schlauch..
die datei kann ich auswählen weiss aber jetzt nicht wie ich sie an idftp1.put übergebe
kann mir da jemand helfen?

procedure TForm1.Button20Click(Sender: TObject);
var
Datei: String;
begin
if OpenDialog1.Execute then
begin
Datei := OpenDialog1.FileName;
idFTP1.Put('gewählte Datei: ' + Datei,'tmp',true);
end
else
ShowMessage('nix ausgewählt...');

end;

soll auf dem FTP in /tmp landen und installiert werden mit telnet
der telnet client läuft im programm

danke

DieDolly 5. Aug 2018 14:40

AW: mit opendialog file auswählen und zum ftp senden?
 
Delphi-Quellcode:
idFTP1.Put(OpenDialog1.FileName, ExtractFileName(OpenDialog1.FileName), True);


Was du übergibst ist 'gewählte Datei: ' + Datei. Das kann nicht funktionieren.

Reiter0303 5. Aug 2018 14:43

AW: mit opendialog file auswählen und zum ftp senden?
 
danke, probiere ich gleich mal...
ja dachte ich mir,das das wohl so nicht geht
wie deklariere ich jetzt noch das verzeichnis wo die datei hin soll?

KodeZwerg 5. Aug 2018 14:44

AW: mit opendialog file auswählen und zum ftp senden?
 
Bei dem was da steht fehlt irgendwie sehr viel. Wohin, Name/Pw, Port usw usf.
Moderator Luckie hat hier ein cooles Beispiel samt Fortschrittsanzeige bereitgestellt zum Lernen.

DieDolly 5. Aug 2018 14:47

AW: mit opendialog file auswählen und zum ftp senden?
 
Passwort und so steht sicher im ObjektInspektor.

KodeZwerg 5. Aug 2018 14:50

AW: mit opendialog file auswählen und zum ftp senden?
 
Du meinst er ist mit FTP bereits vor dem Dialog verbunden? Das konnte ich nicht Wissen.

Reiter0303 5. Aug 2018 15:00

AW: mit opendialog file auswählen und zum ftp senden?
 
oh sorry, die ftp verbindung steht schon, will blos die datei nach tmp schieben
aber unter tmp landet sie nicht
ah, gut, hab noch ein
IdFTP1.ChangeDir('/tmp');
eingefügt, jetzt geht es danke

DieDolly 5. Aug 2018 15:02

AW: mit opendialog file auswählen und zum ftp senden?
 
Delphi-Quellcode:
idFTP1.Put(OpenDialog1.FileName, '/tmp/' + ExtractFileName(OpenDialog1.FileName), True);

KodeZwerg 5. Aug 2018 15:03

AW: mit opendialog file auswählen und zum ftp senden?
 
Nicht
Delphi-Quellcode:
IdFTP1.ChangeDir('Zielverzeichniss');
?

Delphi.Narium 5. Aug 2018 16:40

AW: mit opendialog file auswählen und zum ftp senden?
 
Im Objektinspektor kann man doch die Filter beim entsprechenden Attribut erfassen.

Da gibt es (zumindest bei Delphi 7) 'ne Eingabemaske, in der man links den Namen und rechts die Dateiendung(en) angibt.
Das hat den Vorteil, man erfasst die Filter in der korrekten Syntax. Und die wäre da
Delphi-Quellcode:
Filter := 'Delphi-Files (*.pas;*.dpr;*.dpk;*.inc)|*.pas;*.dpr;*.dpk;*.inc';
// oder aber auch
Filter := 'Delphi-Files|*.pas;*.dpr;*.dpk;*.inc';
// oder für HTML
Filter := 'html files|*.htm;*.html|all files|*.*';
// oder eher alles fürs Web
Filter := 'html files|*.htm;*.html|image files|*.bmp;*.gif;*.jpg;*.jpeg;*.png|text files|*.txt|all files|*.*';
Eventuell könnte es ja so funktionieren:
Delphi-Quellcode:
procedure TForm1.Button20Click(Sender: TObject);
var
  Datei: String;
begin
  OpenDialog1.Filter := 'Datei|*.ipk|ZIP-Dateien|*.zip';
  OpenDialog1.FilterIndex := 0;
  if OpenDialog1.Execute then
  begin
    Datei := OpenDialog1.FileName;
    idFTP1.Put(OpenDialog1.FileName,'/tmp/' + ExtractFileName(OpenDialog1.FileName), True);
   end
   else
     ShowMessage('nix ausgewählt...');
end;
Beispiele für Put: https://www.experts-exchange.com/que...ing-files.html

Hier insbesondere den letzten Beitrag lesen: https://www.tek-tips.com/viewthread.cfm?qid=1439325

KodeZwerg 5. Aug 2018 17:37

AW: mit opendialog file auswählen und zum ftp senden?
 
Meine Delphi-Hilfe spuckt fürs Thema FTP auch ein paar interessante Dinge aus, hier ein Beispiel um eine Datei hochzuladen.
Zitat:

Placing Files on an FTP Server

There are two methods for placing a file on an FTP server:


Use FtpOpenFile with InternetWriteFile.
Use FtpPutFile.
An application that must send data to an FTP server, but does not have a local file that contains all the data, should use FtpOpenFile to create and open a file on the ftp server. The application then can use InternetWriteFile to upload the information to the file.

If the file already exists locally, the application can use FtpPutFile to upload the file to the FTP server. FtpPutFile performs all the overhead that goes with uploading a local file to a remote FTP server.

The following example copies a local file onto the FTP server. The local name of the file is taken from the edit box in the parent dialog whose IDC is passed in the nLocalFileNameId parameter, and the name under which the file is saved on the FTP server is taken from the edit box whose IDC is passed in the nFtpFileNameId parameter. The hConnection handle was created by InternetConnect after establishing an FTP session.
Code:
BOOL WINAPI PutFtpFile( HWND hDlg, HINTERNET hConnection,
                        int nFtpFileNameId, int nLocalFileNameId )
{
  TCHAR szFtpFileName[FTP_FUNCTIONS_BUFFER_SIZE];
  TCHAR szLocalFileName[FTP_FUNCTIONS_BUFFER_SIZE];
  DWORD dwTransferType;
  TCHAR szBoxTitle[] = TEXT( "Upload FTP File" );
  TCHAR szASCIIQuery[] =
    TEXT("Do you want to upload as ASCII text? (Default is binary)");
  TCHAR szAsciiDone[] =
    TEXT( "ASCII Transfer completed successfully..." );
  TCHAR szBinaryDone[] =
    TEXT( "Binary Transfer completed successfully..." );

  if( !GetDlgItemText( hDlg, nFtpFileNameId, szFtpFileName,
                       FTP_FUNCTIONS_BUFFER_SIZE ) ||
      !GetDlgItemText( hDlg, nLocalFileNameId, szLocalFileName,
                       FTP_FUNCTIONS_BUFFER_SIZE ) )
  {
    MessageBox( hDlg,
                TEXT("Target File or Destination File Missing"),
                szBoxTitle,
                MB_OK | MB_ICONERROR );
    return( FALSE );
  }

  dwTransferType =
    ( MessageBox( hDlg,
                  szASCIIQuery,
                  szBoxTitle,
                  MB_YESNO ) == IDYES ) ?
    FTP_TRANSFER_TYPE_ASCII : FTP_TRANSFER_TYPE_BINARY;

  if( !FtpPutFile( hConnection,
                   szLocalFileName,
                   szFtpFileName,
                   dwTransferType,
                   0 ) )
  {
    InternetErrorOut( hDlg, GetLastError( ), TEXT( "FtpGetFile" ) );
    return( FALSE );
  }

  MessageBox( hDlg,
              ( dwTransferType == FTP_TRANSFER_TYPE_ASCII ) ?
                szAsciiDone : szBinaryDone, szBoxTitle, MB_OK );
  return( TRUE ); // Remember to refresh directory listing
}


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:16 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-2025 by Thomas Breitkreuz