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
Seite 1 von 2  1 2      
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, 05: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.056 Beiträge
 
Delphi 12 Athens
 
#2

AW: idFTP Falsche Dateigröße nach Upload

  Alt 1. Jan 2011, 05: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 1. Jan 2011 um 05: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, 13: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 13: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, 13: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 13: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, 14: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, 23: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
Benutzerbild von Cyberaxx
Cyberaxx

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

AW: idFTP Falsche Dateigröße nach Upload

  Alt 2. Jan 2011, 00:42
Klar habe ich zugriff, ist ja immerhin mein Root Server

War allerdings ein wenig Arbeit das log zu suchen. Ist nicht dort wo ich es vermutet hatte.

Hier wird nun auch deutlich, sofern ich das richtig lese, das mein Delphi bzw. die idFTP es im ASCII Mode

Zitat:
File Zilla
Sun Jan 2 00:29:07 2011 0 ... 71960 /home/dsnprogupdater/Login.png b _ i r dsnprogupdater ftp 1 * c

Delphi mit Indy 10.5.5
Sun Jan 2 00:32:02 2011 1 ... 71959 /home/dsnprogupdater/Login.png a _ i r dsnprogupdater ftp 1 * c
Delphi-Quellcode:
    //IdFTP1.Put(AppDir + edtFileName.Text, edtFileName.Text); <-- Hatte es versucht.
    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);
Ich hatte es vorher als direkt Upload gehabt. Als dies nicht klappte, habe ich es mit dem Stream versucht. Egal wie, es ist immer eine defekte Datei.
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 Cyberaxx
Cyberaxx

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

AW: idFTP Falsche Dateigröße nach Upload

  Alt 2. Jan 2011, 02:03
Hab nun das Problem gefunden.
Die Delphi 2010 Indy's sind wohl nicht gerade das wahre.

Habe die Aktuellste Version gerade installiert und nun funktioniert es auch.
Datei wird im Binary Modus übertragen und ist unbeschädigt.

Bedanke mich aber bei Dir OldGrumpy für die Hilfe.
Hätte nicht gedacht das dort der Fehler liegt.
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
 
#9

AW: idFTP Falsche Dateigröße nach Upload

  Alt 2. Jan 2011, 05:27
Schön dass das Problem gelöst ist, auch wenn es weniger schön ist, dass die mitgelieferte Version der Indys so eine Gurke ist. Aber das Spielchen kenne ich schon aus früheren Delphiversionen, ich hatte es nur verdrängt Ich kenne sogar mindestens einen Entwickler der von den Indys inzwischen derart die Nase voll hat dass er jetzt wieder auf Windows Bordmittel aufsetzt für das was er braucht (WinInet)... Das ist aber immer eine Einzelfallentscheidung, denke ich.
"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
Benutzerbild von himitsu
himitsu
Online

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

AW: idFTP Falsche Dateigröße nach Upload

  Alt 2. Jan 2011, 07:27
Jetzt wo ihr das sagt, ich glaub wir hatten letztes Jahr schonmal dieses Problem mit 2010 und dort half eenfalls ein Upgrade.
Wäre mal interessant zu wissen, ob dieses in XE behoben wurde.

[add]
jetzt weiß ich's wieder
http://www.delphipraxis.net/148129-u...ml#post1001420
http://www.delphipraxis.net/136752-f...r-datei-2.html
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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 21:44 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