![]() |
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; |
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 |
Re: Problem bei FTP upload (Indy 10)
Hi Drome,
Zitat:
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... |
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! |
Re: Problem bei FTP upload (Indy 10)
Zitat:
Delphi-Quellcode:
Das ganze einfach vor Deinem Put, oder im OnCreate des Forms.
IdFTP1.ReadTimeout := 30000;
IdFTP1.ConnectTimeout := 30000; 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 |
Re: Problem bei FTP upload (Indy 10)
Den ReadTimeout und den ConnectTimeout zu verändern hat auch nicht's gebracht.
|
Re: Problem bei FTP upload (Indy 10)
Sag mal, der "Socket Error" tritt aber nicht innerhalb der IDE auf, oder?
|
Re: Problem bei FTP upload (Indy 10)
Hier mal der Komplette Source des FTP Client's:
Delphi-Quellcode:
den Timeout habe ich wieder rausgenommen, da das nicht's gebracht hat.
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. |
Re: Problem bei FTP upload (Indy 10)
Ist das Problem mit jeder Datei oder nur mit einer bestimmten Datei?
|
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. |
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