Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem bei FTP upload (Indy 10) (https://www.delphipraxis.net/104634-problem-bei-ftp-upload-indy-10-a.html)

Drome 7. Dez 2007 19:49


Problem bei FTP upload (Indy 10)
 
Also ich habe folgendes Problem, wenn ich ein kleine Datei uploaden will (300 kb), dann geht das, wenn ich aber eine 3 MB Datei uploaden will, zeigt er mir nach einer weile einen EIdSocket Error an und bricht den Upload ab.

Meldung:

"Im Projekt P_FTPClient ist eine Exeption der Klasse EIdSocketError mit der Meldung 'Socket Error # 10053 Software caused connection abort.' aufgetreten."

Hier der upload Source:
Delphi-Quellcode:
procedure TForm1.Button_DateiuploadenClick(Sender: TObject);
 begin
 Dateinameu := '';
  if OpenDialog1.Execute then
   with IdFTP1 do
    begin
    Passive := True;
    end;
 IdFTP1.Put(OpenDialog1.FileName,Dateinameu, true);
 DirectoryListBox.Items.Clear;
 IdFTP1.List(DirectoryListBox.Items);
 end;

SvB 7. Dez 2007 20:55

Re: Problem bei FTP upload (Indy 10)
 
Hast Du schon mal probiert mit einem Standard FTP-Client die Datei hoch zu laden, ob das geht. Wenn nicht, dann liegt es nicht ein Deinem Programm.
Vielleicht wird vom FTP-Server ja ab einer bestimmten Größe der Upload blockiet/beendet.

Grüße Sven

Assertor 7. Dez 2007 21:05

Re: Problem bei FTP upload (Indy 10)
 
Hi Drome,

Zitat:

Zitat von Drome
wenn ich aber eine 3 MB Datei uploaden will, [...] bricht den Upload ab.

Kann es sein, daß der FTP Account den Du benutzt Quota falsch oder zu niedrig gesetzt hat? Probiere mit den selben (!) Zugangsdaten den Upload dieser Datei z.B. per FileZilla.

Ansonsten kannst Du die Timeouts auch erhöhen...

Gruß Assertor

Edit: Hab Svens Beitrag wohl nur überflogen. Das hier ist das gleiche in grün...

Drome 7. Dez 2007 21:45

Re: Problem bei FTP upload (Indy 10)
 
Mit Filezilla geht es ja prima.
Könntest du mir bitte Schreiben, wie ich die Timeouts erhöhen kann!

Assertor 8. Dez 2007 10:09

Re: Problem bei FTP upload (Indy 10)
 
Zitat:

Zitat von Drome
Könntest du mir bitte Schreiben, wie ich die Timeouts erhöhen kann!

Klar, ist aber nicht schwer:

Delphi-Quellcode:
IdFTP1.ReadTimeout := 30000;
IdFTP1.ConnectTimeout := 30000;
Das ganze einfach vor Deinem Put, oder im OnCreate des Forms.

Unter Nutzung einer anderen Indy Unit (IdFTPCommon oder so) kannst Du auch auf eine Constante die IdInfinite (oder ähnlich) heißt setzen. Dadurch werden die Timeouts auch entsprechend hoch gesetzt.

Guck aber lieber nochmal in der OH nach, ob die Timeouts in MSek oder Sek sind.

Gruß Assertor

Drome 8. Dez 2007 11:02

Re: Problem bei FTP upload (Indy 10)
 
Den ReadTimeout und den ConnectTimeout zu verändern hat auch nicht's gebracht.

Assertor 8. Dez 2007 11:22

Re: Problem bei FTP upload (Indy 10)
 
Sag mal, der "Socket Error" tritt aber nicht innerhalb der IDE auf, oder?

Drome 8. Dez 2007 12:28

Re: Problem bei FTP upload (Indy 10)
 
Hier mal der Komplette Source des FTP Client's:

Delphi-Quellcode:
unit U_FTPClient;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdExplicitTLSClientServerBase, IdFTP, StdCtrls, ComCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Login_Button: TButton;
    DirectoryListBox: TListBox;
    Button_Logout: TButton;
    Button_Ordnerloeschen: TButton;
    Button_Ordnererstellen: TButton;
    IdFTP1: TIdFTP;
    UserIDEdit: TEdit;
    PasswordEdit: TEdit;
    FtpServerEdit: TEdit;
    StatusBar1: TStatusBar;
    Edit_AktuellerOrdner: TEdit;
    Label1: TLabel;
    Edit_Ordnererstellen: TEdit;
    Edit_Ordnerloeschen: TEdit;
    Edit_DateiDownloaden: TEdit;
    Edit_Dateiloeschen: TEdit;
    Button_Dateiloeschen: TButton;
    ProgressBar1: TProgressBar;
    SaveDialog1: TSaveDialog;
    Button_DateiDownloaden: TButton;
    Button_Dateiuploaden: TButton;
    OpenDialog1: TOpenDialog;
    E_Ordneroeffnen: TEdit;
    Button_Ordneroeffnen: TButton;
    procedure Button_DateiuploadenClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button_DateiDownloadenClick(Sender: TObject);
    procedure IdFTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
      AWorkCountMax: Integer);
    procedure Button_OrdnererstellenClick(Sender: TObject);
    procedure Button_DateiloeschenClick(Sender: TObject);
    procedure Button_OrdnerloeschenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button_LogoutClick(Sender: TObject);
    procedure Login_ButtonClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Dateiname: string;
  Dateinameu: string;

implementation

{$R *.dfm}

procedure TForm1.Login_ButtonClick(Sender: TObject);
begin
IdFTP1.Username := UserIDEdit.Text;
IdFTP1.Password := PasswordEdit.Text;
IdFTP1.Host := FtpServerEdit.Text;
IdFTP1.Connect;
IdFTP1.List(DirectoryListBox.Items);
Edit_AktuellerOrdner.Text := '/';
Button_Logout.Enabled := True;
Button_Ordnererstellen.Enabled := True;
Button_Ordnerloeschen.Enabled := True;
Button_Ordneroeffnen.Enabled := True;
Button_Dateiloeschen.Enabled := True;
Button_DateiDownloaden.Enabled := True;
Button_Dateiuploaden.Enabled := True;
Login_Button.Enabled := False;
end;
procedure TForm1.Button_LogoutClick(Sender: TObject);
begin
IdFTP1.Quit;
Button_Logout.Enabled := False;
DirectoryListBox.Items.Clear;
DirectoryListBox.Items.Add('Verbindung Getrennt');
Login_Button.Enabled := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

Button_Ordnerloeschen.Enabled := False;
Button_Ordnererstellen.Enabled := False;
Button_Dateiloeschen.Enabled := False;
Button_DateiDownloaden.Enabled := False;
Button_Ordneroeffnen.Enabled := False;
Button_Dateiuploaden.Enabled := False;
Button_Logout.Enabled := False;
end;

procedure TForm1.Button_OrdnererstellenClick(Sender: TObject);
begin
IdFTP1.MakeDir(Edit_Ordnererstellen.Text);
Edit_Ordnererstellen.Text := '';
DirectoryListBox.Items.Clear;
IdFTP1.List(DirectoryListBox.Items);
end;

procedure TForm1.Button_OrdnerloeschenClick(Sender: TObject);
begin
IdFTP1.RemoveDir(Edit_Ordnerloeschen.Text);
Edit_Ordnerloeschen.Text := '';
DirectoryListBox.Items.Clear;
IdFTP1.List(DirectoryListBox.Items);
end;


procedure TForm1.Button_DateiloeschenClick(Sender: TObject);
begin
IdFTP1.Delete(Edit_Dateiloeschen.Text);
Edit_Dateiloeschen.Text := '';
DirectoryListBox.Items.Clear;
IdFTP1.List(DirectoryListBox.Items);
end;



procedure TForm1.IdFTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Integer);
begin
ProgressBar1.Max := AWorkCountMax;
ProgressBar1.Position := 0;
end;


procedure TForm1.Button_DateiDownloadenClick(Sender: TObject);
begin
Dateiname := '';
Dateiname := Edit_DateiDownloaden.Text;
if SaveDialog1.Execute then
  IdFTP1.Get(Dateiname, SaveDialog1.FileName, true);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
IdFTP1.ChangeDir(E_Ordneroeffnen.text);
Edit_AktuellerOrdner.Text := Edit_AktuellerOrdner.Text + E_Ordneroeffnen.Text;
E_Ordneroeffnen.text := '';
DirectoryListBox.Items.Clear;
IdFTP1.List(DirectoryListBox.Items);
end;

procedure TForm1.Button_DateiuploadenClick(Sender: TObject);
begin
Dateinameu := '';
  if OpenDialog1.Execute then
   with IdFTP1 do
    begin
    Passive := True;
    end;
IdFTP1.Put(OpenDialog1.FileName,Dateinameu, true);
DirectoryListBox.Items.Clear;
IdFTP1.List(DirectoryListBox.Items);
end;

end.
den Timeout habe ich wieder rausgenommen, da das nicht's gebracht hat.

SvB 8. Dez 2007 19:08

Re: Problem bei FTP upload (Indy 10)
 
Ist das Problem mit jeder Datei oder nur mit einer bestimmten Datei?

Drome 8. Dez 2007 19:40

Re: Problem bei FTP upload (Indy 10)
 
Nein nicht mit allen, nur mit Dateien ab einer bestimmten Größe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:21 Uhr.
Seite 1 von 2  1 2      

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