AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Problem bei FTP upload (Indy 10)
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei FTP upload (Indy 10)

Offene Frage von "Drome"
Ein Thema von Drome · begonnen am 7. Dez 2007 · letzter Beitrag vom 17. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2      
Drome

Registriert seit: 2. Nov 2007
16 Beiträge
 
#1

Problem bei FTP upload (Indy 10)

  Alt 7. Dez 2007, 19:49
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;
  Mit Zitat antworten Zitat
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

Re: Problem bei FTP upload (Indy 10)

  Alt 7. Dez 2007, 20:55
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
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#3

Re: Problem bei FTP upload (Indy 10)

  Alt 7. Dez 2007, 21:05
Hi Drome,

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...
Frederik
  Mit Zitat antworten Zitat
Drome

Registriert seit: 2. Nov 2007
16 Beiträge
 
#4

Re: Problem bei FTP upload (Indy 10)

  Alt 7. Dez 2007, 21:45
Mit Filezilla geht es ja prima.
Könntest du mir bitte Schreiben, wie ich die Timeouts erhöhen kann!
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#5

Re: Problem bei FTP upload (Indy 10)

  Alt 8. Dez 2007, 10:09
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
Frederik
  Mit Zitat antworten Zitat
Drome

Registriert seit: 2. Nov 2007
16 Beiträge
 
#6

Re: Problem bei FTP upload (Indy 10)

  Alt 8. Dez 2007, 11:02
Den ReadTimeout und den ConnectTimeout zu verändern hat auch nicht's gebracht.
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#7

Re: Problem bei FTP upload (Indy 10)

  Alt 8. Dez 2007, 11:22
Sag mal, der "Socket Error" tritt aber nicht innerhalb der IDE auf, oder?
Frederik
  Mit Zitat antworten Zitat
Drome

Registriert seit: 2. Nov 2007
16 Beiträge
 
#8

Re: Problem bei FTP upload (Indy 10)

  Alt 8. Dez 2007, 12:28
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.
  Mit Zitat antworten Zitat
SvB

Registriert seit: 21. Okt 2004
Ort: Eckenroth
426 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

Re: Problem bei FTP upload (Indy 10)

  Alt 8. Dez 2007, 19:08
Ist das Problem mit jeder Datei oder nur mit einer bestimmten Datei?
  Mit Zitat antworten Zitat
Drome

Registriert seit: 2. Nov 2007
16 Beiträge
 
#10

Re: Problem bei FTP upload (Indy 10)

  Alt 8. Dez 2007, 19:40
Nein nicht mit allen, nur mit Dateien ab einer bestimmten Größe.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:46 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