FTPLib 2.1.1.0

    • Release

    Es gibt 589 Antworten in diesem Thema. Der letzte Beitrag () ist von hitman48.

      Das löst aber leider nicht mein Problem!

      VB.NET-Quellcode

      1. 'Inhalt der Variablen:
      2. 'Config.FTPServer = www.mar-apps.de
      3. 'Config.Username = mein_username
      4. 'Config.Password = mein_passwort
      5. 'Config.Port = 21
      6. 'RemoteFile = /Test/Datei.zip
      7. 'LocalFile = C:\User\Name\Documents\Datei.zip
      8. Dim WithEvents FTPServer As New FTPLib.FTP
      9. FTPServer.Connect(Config.FTPServer, Config.Username, Config.Password, Config.Port)
      10. If FTPServer.FileExists(RemoteFile) = False Then
      11. MsgBox("Datei wurde nicht auf dem Server gefunden.", MsgBoxStyle.Exclamation)
      12. Else
      13. ProgressBar1.Style = ProgressBarStyle.Continuous
      14. FTPServer.DownloadAsync(RemoteFile, LocalFile)
      15. MsgBox(FTPServer.IsBusy) 'Gibt immer False aus
      16. End If

      Das Verbinden zum Server funktioniert ohne Probleme, es wird auch richtig erkannt, ob die Datei auf dem Server existiert oder nicht. Nur der Download/Upload klappt nicht.
      Folgende Events verwende ich:

      VB.NET-Quellcode

      1. Private Sub FTPServer_DownloadProgressChanged(sender As Object, e As FTPLib.appEventArgs.FTPDownloadProgressChangedEventArgs) Handles FTPServer.DownloadProgressChanged
      2. ProgressBar1.Value = e.Single.Percent
      3. Label_Size.Text = CStr(Math.Round(((e.Single.SizeLeft / 1024) / 1024), 2)) & " MB von " & CStr(Math.Round(((e.Single.Size / 1024) / 1024), 2)) & " MB"
      4. Label_Bandwidth.Text = CStr(e.Single.Bandwidth) & " KB/s"
      5. MsgBox("test")
      6. End Sub
      7. Private Sub FTPServer_DownloadComplete(sender As Object, e As FTPLib.appEventArgs.FTPDownloadCompletedEventArgs) Handles FTPServer.DownloadCompleted
      8. MsgBox("fertig")
      9. End Sub

      Beide Events werden nicht aufgerufen. Zumindest erscheint keine der beiden eingebauten Test-MsgBoxen.
      Schick mir mal die Zugangsdaten per PN, damit ich den Fehler nachreproduzieren kann. Meine Vermutung ist, das beim Validieren der Antworten ein Fehler auftritt, dieser ist in der neusten Version, die ich gerade teste und verbesser, behoben.

      m477h35 schrieb:

      Gerade habe ich bemerkt, dass doch nicht richtig erkannt wird, ob die Datei existiert oder nicht. Es wird immer True zurückgegeben, auch wenn die Datei nicht auf dem Server ist.

      Nein wird auf jeden Fall nicht. Dies kann ggf. mit folgendem zusammenhängen, was ich bereits oben geschrieben habe.

      singu schrieb:

      Meine Vermutung ist, das beim Validieren der Antworten ein Fehler auftritt, dieser ist in der neusten Version, die ich gerade teste und verbesser, behoben.



      Sobald ich Zeit habe, teste ich die neue Version und werde diese dann veröffentlichen. Wer diese Version gerne testen möchte, kann sich gerne bei mir melden.
      Hallo,

      ich habe folgendes Problem:

      wenn ich einen Ordner erstellen will und im Quellcode

      VB.NET-Quellcode

      1. Try
      2. locFTP.DirectoryCreate("/order")
      3. Catch ex As appExceptions.FTPDirectoryAlreadyExistsException
      4. MessageBox.Show(ex.Message)
      5. Catch ex As Exception
      6. MessageBox.Show(ex.Message)
      7. End Try

      angebe, dann funktioniert alles wunderbar. :)
      Mit einer Variable wie z.B.

      VB.NET-Quellcode

      1. Try
      2. locFTP.DirectoryCreate(dateiname)
      3. Catch ex As appExceptions.FTPDirectoryAlreadyExistsException
      4. MessageBox.Show(ex.Message)
      5. Catch ex As Exception
      6. MessageBox.Show(ex.Message)
      7. End Try

      bekomme ich dann die Meldung "/testorder existiert bereits."

      Ansonsten gefällt mir die Lib sehr gut! :thumbup:

      Gruß
      Pascal
      hallo singu

      erstmal respekt für deine Lib die bei mir auch mal funktioniert hatte.

      Iwie habe ich jetzt das Problem, dass es nicht mehr geht.

      Ich prüfe zunächst, ob die Datei vorhanden ist, wenn ja dann soll er sie runterladen, dann bricht er den Download immer ab. Fehlercode 550, Datei nicht vorhanden oder keine Rechte zu herunterladen. Beides eig. nicht der Fall. Rechte haben die Datei und der Ordner alles was nur geht. Also ich bin ratlos. Hast du da eine Idee?
      Ich hab grade mal dein Demoprogramm genommen und ausgeführt. Da ist mir aufgefallen das Upload geht. Download wieder nicht. Ich habe es schon mit 3 verschiedenen FTP Servern versucht(2 eigene, 1 bei Funpic)

      Ich probiere schon den ganzen Tag hin und her, aber es will einfach nicht. Zwischen durch kam dann kein Fehlercode mehr, sondern Download abgeschlossen, aber die Datei war nicht heruntergeladen worden.

      Ich hoffe du kannst mir vllt. helfen.
      Quellcode poste ich später mal, weil es ist ja mit deinem Demoprogramm genau das gleiche Problem=(

      Muss ich noch iwas spezielles beachten?

      Gruß

      alphamen

      Ps: Ich würde auch gerne deine neuen Versionen probieren wenn du möchtest.


      /edit: Ich benutze Windows 7 64 bit und Visual Basic 2010 Express
      Problem:
      Das Objekt des Typs "NameVonMeinemProgramm.FTP" kann nicht in Typ "System.ComponentModel.ISynchronizeInvoke" umgewandelt werden.

      Code:

      VB.NET-Quellcode

      1. 'ganz oben
      2. Imports FTPLib
      3. 'Weiter unten
      4. Private WithEvents ftp As FTPLib.FTP = Nothing
      5. Public Function FTPupload(ByVal username As String, ByVal password As String, ByVal server As String, ByVal file As String) As String
      6. ftp = New FTPLib.FTP
      7. If My.Computer.FileSystem.FileExists(file) Then
      8. ftp.Connect("ftp://" + server.ToLower.Replace("ftp://", "").Split("/"c)(0), username, password)
      9. ftp.UploadAsync(file, "/" + server.ToLower.Replace("ftp://", "").Split("/"c)(1))
      10. Return "Upload started...."
      11. Else
      12. Return "File does not exist: " + file
      13. End If
      14. End Function
      Schade dass die Lib nicht thread-safe ist, oder verwend ich sie falsch?

      Spoiler anzeigen

      Quellcode

      1. System.TypeInitializationException wurde nicht behandelt.
      2. Message=Der Typeninitialisierer für "FTPLib.FTP" hat eine Ausnahme verursacht.
      3. Source=FTPLib
      4. TypeName=FTPLib.FTP
      5. StackTrace:
      6. bei FTPLib.FTP..ctor()
      7. bei HardForceBackup.ProjectViewer.OnlineWorker_Run(Object sender, DoWorkEventArgs e) in E:\Sicherung\Visual Studio 2008\Projects\HardForceBackup\HardForce Backup\ProjectViewer.cs:Zeile 427.
      8. bei System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
      9. bei System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
      10. bei System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
      11. bei System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)
      12. bei System.Runtime.Remoting.Proxies.AgileAsyncWorkerItem.ThreadPoolCallBack(Object o)
      13. bei System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
      14. bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
      15. bei System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
      16. bei System.Threading.ThreadPoolWorkQueue.Dispatch()
      17. InnerException: System.AccessViolationException
      18. Message=Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
      19. Source=mscorlib
      20. StackTrace:
      21. bei System.Runtime.InteropServices.Marshal.ReadInt32(IntPtr ptr, Int32 ofs)
      22. bei System.Runtime.InteropServices.Marshal.ReadIntPtr(IntPtr ptr, Int32 ofs)
      23. bei 5hVeogh5NOk1saXw3A.Gu1dDijcNtrnO1ZBdj.RZ54hSvY3(UInt64& , IntPtr , IntPtr , UInt32 , IntPtr& , UInt32& )
      24. bei 5hVeogh5NOk1saXw3A.Gu1dDijcNtrnO1ZBdj.kvXT0EAqISTxtk4PG0()
      25. bei 5hVeogh5NOk1saXw3A.Gu1dDijcNtrnO1ZBdj.IXvJAKqs1()
      26. bei FTPLib.FTP..cctor()
      27. InnerException:
      28. Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
      29. bei System.Runtime.InteropServices.Marshal.ReadInt32(IntPtr ptr, Int32 ofs)
      30. bei System.Runtime.InteropServices.Marshal.ReadIntPtr(IntPtr ptr, Int32 ofs)
      31. bei 5hVeogh5NOk1saXw3A.Gu1dDijcNtrnO1ZBdj.RZ54hSvY3(UInt64& , IntPtr , IntPtr , UInt32 , IntPtr& , UInt32& )
      32. bei 5hVeogh5NOk1saXw3A.Gu1dDijcNtrnO1ZBdj.kvXT0EAqISTxtk4PG0()
      33. bei 5hVeogh5NOk1saXw3A.Gu1dDijcNtrnO1ZBdj.IXvJAKqs1()
      34. bei FTPLib.FTP..cctor()



      Mir ist klar, dass die Lib eine Asynch-Methode bietet. Jedoch hab ich noch mehr Sachen zu tun, welche in den Thread ausgelagert werden müssen. Naja dann muss ich das wohl manuell machen, aber egal ;)
      Hallo,

      ich habe folgendes Problem. Wenn ich mein Programm mit deiner Lib benutze funktioniert bis her alles einwandfrei. Nur beim Schließen des Programms hängt sich mein Visual Studio, für einige Zeit, auf. Ich benutze die Ultimate-Version. Bei deinem Demo-Projekt passiert es nicht. Hier mein Source-Code:

      VB.NET-Quellcode

      1. Imports FTPLib
      2. Public Class einlogFrame
      3. Dim IP As String
      4. Dim Port As Double
      5. Dim Benutzer As String
      6. Dim Passwort As String
      7. Dim FTP As New FTP
      8. Private Sub btnEinloggen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEinloggen.Click
      9. IP = txtIP.Text
      10. Port = txtPort.Text
      11. Benutzer = txtBenutzer.Text
      12. Passwort = txtPassword.Text
      13. If Port = 0 Then
      14. Port = 21
      15. Else
      16. End If
      17. FTP.Connect(IP, Benutzer, Passwort, Port)
      18. If (FTP.IsConnected = True) Then
      19. Label1.Text = "Verbindung wurde hergestellt"
      20. End If
      21. End Sub
      22. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
      23. If (FTP.IsConnected = True) Then
      24. FTP.Disconnect()
      25. End If
      26. End Sub
      27. End Class


      Mit freundlichen Grüßen
      Cebrox