Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Daten - Upload - MySQL (https://www.delphipraxis.net/115869-daten-upload-mysql.html)

user0815 19. Jun 2008 09:10


Daten - Upload - MySQL
 
Hi,
ich komme nicht weiter. Ich will Daten von Ort X abrufen und ins Internet stellen. An Ort Y soll auf diese Daten zugegriffen werden. Die Anzahl der Daten kann variieren, also von einem Datensatz bis > 1000 DS.

Habe mir vorgestellt das ich die Daten an Ort X via INDY IdFTP als Datei ins Netz stelle, dann ein PHP Script anstosse das die Datei nimmt, ausliest & die Daten in die MySQL DB schreibt. Anschließend wird die Datei auf dem Server in ein anderes Verzeichnis kopiert.

An Ort Y kann jetzt der Import erfolgen. Dazu wird eine PHP WEB Seite aufgerufen, ein Datum übergeben und alle Daten nach diesem Zeitraum werden auf dem Server in eine Datei geschrieben. Der Download erfolgt via UrlDownloadToFile, Lokal importieren usw...

Das funktioniert !

Was ich nicht wollte:
Ich kann mit dem Netzwerksniffer Packetyzer (http://www.paglo.com/opensource/packetyzer) die FTP Verbindungdaten der INDY IdFTP in Klarschrift lesen: TEST, kannichlesen, ftp.adresse.de


IdFTP.Username := 'TEST';
IdFTP.Password := 'kannichlesen';
IdFTP.Host := 'ftp.adresse.de';


Meine Frage: Ist es überhaupt sinnvoll den Datenupload so durchzuführen oder sollte man die Daten anders übertragen ?


Danke für ne Anregung / einen Denkanstoss
user0815

Olli 21. Jun 2008 22:02

Re: Daten - Upload - MySQL
 
Wenn du es selber steuern kannst, nimm eine sichere Methode. Du kannst auch Verschlüsselungsverfahren benutzen. Das Transportprotokoll (soweit FTP) solltest du abstrahieren. Ggf. durch SFTP, FTPS oder SCP ersetzen.

Ein POST-Request zum hochladen ginge auch.

user0815 23. Jun 2008 12:09

Re: Daten - Upload - MySQL
 
Habe das ganze jetzt mit einem Post Request umgesetzt.

Delphi-Quellcode:
uses
  IdMultipartFormData;

...

procedure TForm1.Button1Click(Sender: TObject);
var
  filename: TFileName;
  Data : TIDMultiPartFormDataStream;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'test.txt'; // Anwendungsverzeichnis

  if FileExists(filename) then
  begin

    try
      Data := TIdMultiPartFormDataStream.Create;
      Data.AddFile('userfile', filename, 'txt');
      Data.Position := 0;

      Memo1.Lines.Text := IdHTTP.Post('http://localhost/eigenesverzeichnis/test.php', Data);
    finally
      Data.Free;
    end;

  end;
end;
test.php Code

Code:
<?php

/*   
   In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead of $_FILES.

   basename
   ==========================================================================================
   $path = "/home/httpd/html/index.php";
   $file = basename($path);                 // $file is set to "index.php"
   $file = basename($path, ".php");          // $file is set to "index"
   
   $_FILES
   ==========================================================================================    
   $_FILES['thefile']['name']    
   Der Name der Datei, wie sie auf dem Clientsystem genannt wurde. Eventuelle Verzeichnisangaben werden nicht mitgesendet.
    
   $_FILES['thefile']['tmp_name']    
   Pfad und Name der temporären Datei, wie sie im Filesystem des Servers zu finden ist
   (meistens in der Form /tmp/php234lksdaflk) - diese Datei wird am Skriptende wieder gelöscht.
    
   $_FILES['thefile']['size']    
   Die Größe der Datei in Bytes
   
   $_FILES['thefile']['type']
   Der Mime-Type der Datei, wie der Client sie lieferte (z.B. image/gif).
   
   $_FILES['userfile']['error']   
   The error code associated with this file upload. This element was added in PHP 4.2.0 
*/
    
   $uploaddir = getcwd() . "/upload/"; // getcwd = Gets the current working directory
   $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
   
   echo '<pre>';
   
   if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile))
   {
      echo "File is valid, and was successfully uploaded.\n";
   } 
   else
   {
      echo "Possible file upload attack!\n";
   }
   
   echo 'Here is some more debugging info:\n';
   print_r($_FILES);
   
   print "</pre>";
?>
Memo Feld Ausgabe

Code:
<pre>File is valid, and was successfully uploaded.
Here is some more debugging info:\nArray
(
    [userfile] => Array
        (
            [name] => test.txt
            [type] => txt
            [tmp_name] => D:\xampp\tmp\phpFE.tmp
            [error] => 0
            [size] => 89019
        )

)
</pre>
Greetz
user0815

mquadrat 23. Jun 2008 14:00

Re: Daten - Upload - MySQL
 
Ggf. würde sich noch eine Absenderprüfung bzw. eine Prüfung der Daten anbieten. Über Post kann dir schließlich jeder was schicken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:23 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