Entwickler-Ecke
Internet / Netzwerk - FTP Download Fehlerhaft
Dude566 - So 31.05.09 14:51
Titel: FTP Download Fehlerhaft
Moin,
ich möchte mit meinem FTP Client natürlich dem Benutzer auch die möglichkeit geben Dateien auf seinen Rechner herunterzuladen, das ganze mache ich ja mit Indy9.
Jetzt habe ich das zuletzt getestet und mir ist aufgefallen er speichert zwar etwas aber es sind leere Dateien, egal ob ich beim SaveDialog die Dateiendung mitangebe oder nicht. Wenn ich z.B. .jpg daran hänge wird es zwar als Bilddatei anerkannt aber sie ist leer, und ohne Endung ist es eine Datei die von keinem Programm geöffnet werden kann.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| procedure TForm1.UpAndDownload(upload : boolean); var path : string; i : integer; onlinefile : string; begin if MyFTP.Connected then begin if upload then begin for i := 0 to FileListBox1.Items.Count-1 do if FileListBox1.Selected[i] then path := FileListBox1.Items[i]; with MyFTP do begin try Put(path, ExtractFilename(path)); ShowMessage('Upload erfolgreich.'); except ShowMessage('Upload fehlgeschlagen.'); end; end; end else with MyFTP do begin try onlinefile := ListBox1.Items[ListBox1.ItemIndex]; SaveDialog1.Execute; Get(onlinefile, SaveDialog1.FileName, true); except ShowMessage('Download Fehlgeschlagen.'); end; end; ActList; end else ShowMessage('Sie haben keine Verbindung zu einem Server.'); end;
procedure TForm1.DownloadFileButClick(Sender: TObject); begin UpAndDownload(false); end; |
Kann mir einer sagen wo der Fehler liegt, ich habe absolut keine Ahnung was da falsch läuft. :autsch:
Gruß Dude566
jaenicke - So 31.05.09 15:05
Put ist so deklariert:
Delphi-Quelltext
1:
| procedure TIdFTP.Put(const ASourceFile: string; const ADestFile: string = ''; const AAppend: Boolean = False); |
Quelldatei und (falls man den Namen ändern will z.B.) Zieldatei.
Du aber schreibst da den Pfad und den Dateinamen hin. :shock:
Dude566 - So 31.05.09 15:08
Es geht aber um den Download und nicht den Upload du beziehst dich gerade auf Put was bei dem Upload verwendet wird, ich will aber richtig downloaden mit Get.
Hast du da etwas verwechselt?
jaenicke - So 31.05.09 15:45
Also ich habe es gerade einmal getestet. Wenn der Inhalt der ListBox korrekt ist, sollte das eigentlich klappen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var MyIdFtp: TIdFTP; begin MyIdFtp := TIdFTP.Create; try MyIdFtp.Username := '***'; MyIdFtp.Password := '***'; MyIdFtp.Connect('ftp.sj-berlin.de'); MyIdFtp.ChangeDir('webseiten/updater/updatedemo'); MyIdFtp.Get('versioninfo', 'Z:\TEMP\versioninfo.txt'); MyIdFtp.Disconnect; finally MyIdFtp.Free; end; |
Und auch so klappt es:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var MyIdFtp: TIdFTP; begin MyIdFtp := TIdFTP.Create; try MyIdFtp.Username := '***'; MyIdFtp.Password := '***'; MyIdFtp.Connect('ftp.sj-berlin.de'); MyIdFtp.Get('webseiten/updater/updatedemo/versioninfo', 'Z:\TEMP\versioninfo.txt'); MyIdFtp.Disconnect; finally MyIdFtp.Free; end; |
:nixweiss:
(versioninfo ist eine Datei ohne Dateierweiterung, die mein Autoupdater verwendet.)
Dude566 - So 31.05.09 15:54
Ja aber das ist im Prinzip doch eigentlich das gleiche wie bei mir, nur das ich aus dem aktuellen Verzeichnis downloade wo ich bin da ich ja eine eigene Procedure habe zum Verzeichnis wechseln. Daran kann es doch nicht liegen.
jaenicke - So 31.05.09 16:11
Nachdem ich jetzt einen Blick in den Quelltext geworden habe:
In der ListBox steht nicht nur der Dateiname sondern auch die Dateirechte usw., an Get darfst du aber natürlich nur den Dateinamen übergeben. ;-)
Du würdest es dir einfacher machen, wenn du eine Liste ohne diese Angaben führen würdest bzw. das lieber in eine ListView mit einzelnen Spalten schreiben würdest. ;-)
Dude566 - So 31.05.09 17:24
Gut, ich denke somit haben sich alle Probleme gelöst.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!