AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi idFTP Falsche Dateigröße nach Upload
Thema durchsuchen
Ansicht
Themen-Optionen

idFTP Falsche Dateigröße nach Upload

Ein Thema von Cyberaxx · begonnen am 1. Jan 2011 · letzter Beitrag vom 2. Jan 2011
Antwort Antwort
Benutzerbild von Cyberaxx
Cyberaxx

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

idFTP Falsche Dateigröße nach Upload

  Alt 1. Jan 2011, 04:05
Hallo

Vorweg Informationen zu den verwendeten Systemen.

Server: Root-Server Linux Debian Etch mit ProFTP
Getestet mit Filezilla. Upload der Dateien ohne Probleme.

idFTP ist die mitgelieferte Version von Delphi 2010 Pro (10.5.5)
Transfertype geestet mit ftASCII und ftBinary sowie PassivMode True/False

Anmeldung am Server erfolgt ohne Probleme. Löschen der Dateien ebenfalls.
Dann Lade ich zwei Dateien hoch. Eine XML Datei(Enthällt Update Informationen)
und ein Archive erstellt mit AbZipKit (Enthällt das Update). Dies geschieht auch
ohne Probleme.

Gehe ich dann mit meinem zweiten Programm hin und möchte die Dateien via http
herunterladen.
Die XML Dateiist auch komplett. Diese kann ich ohne Probleme lesen. Es feht dort
auch nichts. Lade ich dann das Archive herunter klappt dies zwar auch, bis ich
es wieder in die AbZipKit Komponente laden möchte. Dann bekomme ich eine
Fehlermeldung. Damit mag ich hier aber nicht nerven, denn daran liegts nicht.

Vergleiche ich die beiden Dateien miteinander Lokal vorm Update mit der auf dem FTP,
so fehlt auf dem FTP ca. 40 Byte.
Habe dann testweise ein Bild hoch geladen. 64.956 Byte Lokal. Auf dem FTP dagegen
nur 64.955 also es fehlt ein Byte. Nochmals getestet mit einer Exe auch hier über
40 Byte die fehlen. Leider habe ich über die Suche bisher nichts passendes
gefunden.
Lade ich die Dateien mit Filezilla hoch so sind sie vollständig.

Ist mit diesem Problem schon jemnand konfrontiert worden und hat dafür eine
Lösung?
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#2

AW: idFTP Falsche Dateigröße nach Upload

  Alt 1. Jan 2011, 04:36
Wenn Dateien im "Text-Modus" übertragen werden, dann wird vom FTP-Server der Zeilenumbruch angepaßt.

Also wird auf einem Linux-Server z.B. aus jedem #13 (CR) oder #13#10 (CRLF) ein #10 (LF).

Handelt es sich nicht um Textdateien oder soll dieses nicht angepaßt werden, dann muß man die Dateien im "Binär-Modus" übertragen.
Also ftASCII.

Bei deinem D7 wird man wohl auf die anfänglichen Indy für Delphi 2009-Unicodeproblemchen nicht eingehn.

Tipp: Schau dir mal die Dateien an und vergleiche sie auf Binär-Ebene, um über die Unterschiede auf ein bestimmtes Problem schließen zu können.


PS: Dazu gibt es mit Sicherheit auch schon ein paar Threads, wo sowas schonmal erkärt wurde,
eventuell auch mit anderen Hinweisen auf änhnliche Probleme.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 1. Jan 2011 um 04:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

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

AW: idFTP Falsche Dateigröße nach Upload

  Alt 1. Jan 2011, 12:08
Hab mal mein Profil überarbeitet. Habe D2010 Professional und Indy 10.5.5 Habe ich aber auch im Thread geschrieben.
Wie gesagt habs im ASCII und im Binary versucht. Beides ohne Erfolg.

Was Deinen lezten Tip angeht, wonach sollte ich da genau suchen? Habe es mit idftp, put, falsche, grösse versucht in Kombinationen natürlich auch in Google aber da hat sich leider nichts mit diesem Problem beschäftigt.

Werde aber mal die Dateien vergleichen, auch wenn ich persönlich daraus sicher nicht schlau werde

Habe nochmal zwischen ASCII und Binary getestet. jeweils selbe Dateigrösse.
Ich hänge sie hier mal an, denn schlau werde ich daraus leider nicht beim Vergleichen.

Login.png ist das Original Login1.png ist durch idFTP bearbeitet worden
Angehängte Dateien
Dateityp: zip Archive.zip (126,2 KB, 14x aufgerufen)
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!

Geändert von Cyberaxx ( 1. Jan 2011 um 12:23 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#4

AW: idFTP Falsche Dateigröße nach Upload

  Alt 1. Jan 2011, 12:37
Der Binärvergleich zeigt eindeutig dass Login1.png im Ascii-Mode übertragen wurde, wodurch gleich am Anfang der Datei ein Byte entfernt und so die Datei zerstört wurde. Jetzt liegt es an Dir, herauszufinden wo der Fehler liegt und warum der Transfer nicht im Binärmodus stattfand.
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)

Geändert von OldGrumpy ( 1. Jan 2011 um 12:38 Uhr) Grund: Tappfuhler ;)
  Mit Zitat antworten Zitat
Benutzerbild von Cyberaxx
Cyberaxx

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

AW: idFTP Falsche Dateigröße nach Upload

  Alt 1. Jan 2011, 13:27
OK.. Also es ist in der Komponente definitiv Binary aktiv. Zur sicherheit habe ich mal vor dem Put ebenfalls nochmal Binary gesetzt.
Jedoch wieder die Datei hin...

Delphi-Quellcode:
procedure TForm2.IdFTP1AfterClientLogin(Sender: TObject);
  var
    SL: TStringList;
    FS: TMemoryStream;
    I: Integer;
begin
  StatusFrm.Add('Connected. Cleaning Directory');

  if CleanUpFTP then begin
    StatusFrm.Add('Create Update Info File');
    SL := TStringList.Create;
    //SL.Add(Format('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>', []));
    SL.Add(Format('<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>', []));
    SL.Add(Format('<updateinfo>', []));
    SL.Add(Format(' <filename>%s</filename>', [edtFileName.Text]));
    SL.Add(Format(' <size>%d</size>', [GetFileSize(AppDir + edtFileName.Text)]));
    SL.Add(Format(' <version>%s</version>', [edtVersion.Text]));
    SL.Add(Format(' <published>%s</published>', [DateTimeToStr(Now)]));
    SL.Add(Format(' <changelog>', []));
    for I := 0 to mmoDescription.Lines.Count - 1 do
      SL.Add(Format(' <line>%s</line>', [mmoDescription.Lines.Strings[I]]));
    SL.Add(Format(' </changelog>', []));
    SL.Add(Format('</updateinfo>', []));
    FS := TMemoryStream.Create;
    SL.SaveToStream(FS);
    FS.Position := 0;
    StatusFrm.Add('Write Update Info File');
    IdFTP1.Put(FS, 'update.xml');
    StatusFrm.Add('Write Update File');
    FS.Clear;
    fs.Position := 0;
    fs.LoadFromFile(AppDir + 'Login.png'); //edtFileName.Text);
    FS.Position := 0;
    IdFTP1.TransferType := ftBinary;
    IdFTP1.Put(FS, 'Login.png'); //edtFileName.Text);
    StatusFrm.Add('Disconnecting');
    try
      IdFTP1.Disconnect;
    except
      on E: EIdConnClosedGracefully do begin

      end;
    end;
    StatusFrm.Add('Delete Update File');
    //DeleteFile(AppDir + edtFileName.Text);
  end;
end;
Client System ist Windows 7 Professional 64. Könnte es unter Umständen daran liegen?
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#6

AW: idFTP Falsche Dateigröße nach Upload

  Alt 1. Jan 2011, 22:56
Hast Du Zugriff auf die Logfiles des FTP-Servers? Mich würde einmal interessieren wie der Server den Upload protokolliert. Ich habe gerade mal in Source von mir geschaut, ausser dass ich nicht mit einem Memorystream arbeite sondern die Datei direkt von der Platte hochlade sieht mein Code nicht nennenswert anders aus als Deiner. Kannst Du evtl. mal ausprobieren ob sich das Verhalten ändert wenn du die Login.png direkt von der Platte hochlädst anstatt sie erst in den Memorystream zu schaufeln?
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:47 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