Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   mobile Anwendung: FTP-Client bleibt beim Uploaden hängen (https://www.delphipraxis.net/180457-mobile-anwendung-ftp-client-bleibt-beim-uploaden-haengen.html)

rdeutsch 21. Mai 2014 15:59

mobile Anwendung: FTP-Client bleibt beim Uploaden hängen
 
Guten Tag

In meiner mobilen Anwendung wird der Bildinhalt einer TImage-Komponente via FTP auf einen Server hochgeladen. Das Uploaden funktioniert, aber der FTP.Put-Befehl bleibt dabei hängen. Nach einer gewissen Zeit (Timeout) erscheint dann die Fehlermeldung: "Zeitüberschreitung beim Lesen".

Hat da jemand eine Idee was da falsch laufen könnte?

PS: egal ob der Bildinhalt via Stream oder als LoadfromFile hochgeladen wird, der Put-Befehl bleibt hängen.

Danke für eure Hilfe und Gruss
Robert


Hier der Code fürs Uploaden:

Code:
procedure TForm5.UploadImage;
var stream : TMemoryStream;
     saveParams : TBitmapCodecSaveParams;
     aBitmapSurface: TBitmapSurface;
     aPath: string;
begin
  memo1.lines.add('starting upload image stream');
  aPath := System.IOUtils.TPath.GetDocumentsPath + System.SysUtils.PathDelim;
  memo1.lines.add('image path: '+aPath);
  Application.ProcessMessages;

  stream := TMemoryStream.Create;
  try
    aBitmapSurface := TBitmapSurface.Create;

    aBitmapSurface.Assign(Image1.bitmap);
    saveparams.Quality:=20;
    //TBitmapCodecManager.SaveToStream(Stream, aBitmapSurface, '.jpg',@saveParams);
    TBitmapCodecManager.SaveToFile(aPath+'mypicture.jpg',aBitmapSurface);

    try
      if not FTPConnected then
        Exit;
      Application.ProcessMessages;
      //FTPClient.Put(stream,'mymobilepic.jpg',true,0);
      FTPClient.Put( aPath+'mypicture.jpg','mywebpicture.jpg',false,0);
      Application.ProcessMessages;
      FTPClient.Disconnect;

      memo1.lines.add('finished upload image stream');
    except
      on e:exception do
        memo1.lines.add('error uploading image stream: '+e.message);
    end;

  finally
    aBitmapSurface.Free;
    stream.Free;
  end;
end;

mjustin 21. Mai 2014 16:59

AW: mobile Anwendung: FTP-Client bleibt beim Uploaden hängen
 
Funktioniert der Transfer denn nicht-mobil, aus einer einfachen Delphi Form- oder Konsolenanwendung?

rdeutsch 21. Mai 2014 17:35

AW: mobile Anwendung: FTP-Client bleibt beim Uploaden hängen
 
Hallo Michael

Aus der normalen Windowsanwendung funktioniert die Sache absolut problemlos.

Gruss Robert

sx2008 21. Mai 2014 19:37

AW: mobile Anwendung: FTP-Client bleibt beim Uploaden hängen
 
Bei PUT, GET oder LIST baut ein FTP-Server normalerweise eine weitere TCP-Verbindung (den Datenkanal) zum Client auf.
Sollte dies aus bestimmten Gründen (z.B. gesperrt durch Firewall, Probleme beim NAT Tunneling ) nicht möglich sein tritt das von dir beschriebene Problem auf.
Versuche mal den Passive-Mode zu aktivieren.

rdeutsch 22. Mai 2014 07:52

AW: mobile Anwendung: FTP-Client bleibt beim Uploaden hängen
 
@sx2008:

Vielen Dank! Das war der richtige Tipp.

Mit Passive = true funktioniert der Upload wie gewünscht.

Nochmals Danke für eure Hilfe und Gruss
Robert


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