AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi nur Teile einer Datei per FTP vom Server laden
Thema durchsuchen
Ansicht
Themen-Optionen

nur Teile einer Datei per FTP vom Server laden

Ein Thema von eddy · begonnen am 17. Aug 2006 · letzter Beitrag vom 17. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#1

nur Teile einer Datei per FTP vom Server laden

  Alt 17. Aug 2006, 12:53
Hallo Leute,

zum Herunterladen von Datendateien per FTP verwende ich

IdFTP1.Get(quellfilename, zielpath + zielfile, false); Das funktioniert soweit auch.

Die bereitgestellten Datendateien (ASCII-Text) sind oftmals sehr groß (> 18 MB) und haben immer den gleichen Dateinamen (ältere erhalten die Endung .000 bis .999).

Um ein doppeltes Lesen von bereits geladenen Dateien zu vermeiden, möchte ich nur die ersten 64 Byte einer jeden Datei laden. Die darin enthaltene Information ist im Gegensatz zu den Dateinamen eineindeutig zuzuordnen.

Kann mir jemand bei der Lösung helfen?

mfg
eddy
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: nur Teile einer Datei per FTP vom Server laden

  Alt 17. Aug 2006, 12:57
Hi!

Du könntest den BITS Service von Windows nutzen. Dieser unterstützt das Herunterladen von Teilen einer Datei (siehe FileRange).

Aber das ist nur ein Tip am Rande, denn du suchst sicherlich etwas anderes.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: nur Teile einer Datei per FTP vom Server laden

  Alt 17. Aug 2006, 13:01
also so weit ich weiss, kann man bei FTP nicht sagen "Hol mir nur die ersten 64 Bytes von Datei 'filename' und ignorier den Rest".

eine Idee hätte ich allerdings:
- überprüfe (mit einem zweiten Thread), wieviel von der datei per FTP schon gekommen ist.
- Wenn es 64 KB oder mehr ist, dann kopiere die Datei und breche dann den FTP-Transfer ab.
- anschliessend kannst Du die Datei auf 64 K abschneiden und dann weiterverarbeiten.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#4

Re: nur Teile einer Datei per FTP vom Server laden

  Alt 17. Aug 2006, 13:50
Soweit ich weiss kann man in der FTP Komponente den Fortschritt abfragen(Progress) dort könnte man auch die Datei überprüfen, somit würde das erstellen einen Threads entfallen.
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union
Online

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: nur Teile einer Datei per FTP vom Server laden

  Alt 17. Aug 2006, 13:55
Du musst zunächst die Puffergröße für Deinen Test verringern, z.B.:
IDFtp1.RecvBufferSize := 128; Dann musst Du einen OnWork-Handler zuweisen, in dem Du den Transfer nach einer bestimmten Anzahl von Bytes abbrichst:
Delphi-Quellcode:
procedure TForm1.IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
   if AWorkCount > 64 then
      IdFTP1.Abort;
end;
Dann kannst Du den Inhalt prüfen, die Puffergröße wieder erhöhen und den OnWork-Handler deaktivieren bzw. anders steuern und den echten Transfer starten. Du kannst die Daten auch in einen Memory-Stream schreiben, so unterbleiben die Festplattenzugriffe.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#6

Re: nur Teile einer Datei per FTP vom Server laden

  Alt 17. Aug 2006, 18:46
Hallo Leute,

vielen Dank für Eure Antworten.

Die Fassung von Union ist die Lösung, die mich meinem Ziel am nächsten bringt.

Allerdings gibt es noch eine häßliche Fehlermeldung (Transfer abortet), die vom Nutzer bestätigt werden muß und somit in einer Schleife, die mehrere Dateien überprüfen soll, stört.

Vielleicht kann man dagegen auch noch etwas unternehmen.

mfg
eddy
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: nur Teile einer Datei per FTP vom Server laden

  Alt 17. Aug 2006, 18:51
..die Fehlermeldung geht nicht weg oder läßt sich unterdrücken wenn Du
idftp1.abort in ein try except o.ä. einpackst?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: nur Teile einer Datei per FTP vom Server laden

  Alt 17. Aug 2006, 18:57
Soweit ich weiß, gibt es irgendeinen Befehl, womit du eine Datei aufteilst (z.B. Byte 1-4) und dann nur das lädst (kann man super sich selber was bauen um was schneller zu laden )
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#9

Re: nur Teile einer Datei per FTP vom Server laden

  Alt 17. Aug 2006, 19:12
Hallo Klaus01,

nein, mit try ... except ... end ist die Fehlermeldung nicht unterdrückbar.

Vielleicht gibt es ein global einstellbaren Parameter in IdFTP, damit die Fehlermeldung unterdrückt wird, aber ich habe nichts dergleichen gefunden.

Ich habe in IdGlobal auch die Stelle gefunden, die die Fehlermeldung generiert, aber noch keine, um diese zu unterbinden.

mfg
eddy
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#10

Re: nur Teile einer Datei per FTP vom Server laden

  Alt 17. Aug 2006, 19:14
Hallo TurboMartin,

wenn Dir nun auch noch einfällt, wie dieser Befehl lautet, käme ich vielleicht auch weiter.

mfg
eddy
  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 18:21 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