vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
FTP Upload/Download über FTPWebrequest 
Autor: MoveIt
Datum: 13.02.18 15:23

Hallo,

die Aufgabe besteht darin, eine FTP-Klasse zu schreiben, die in bestimmten Zeitabständen über einen Timer Textdateien auf unseren FTP-Server hochlädt bzw. von dort herunterlädt.

Beides funktioniert nicht bzw. unzuverlässig.

Public Sub OpenFTPConnection(ByRef request As Net.FtpWebRequest, ByVal Path As _
  String, Optional UseSSL As Boolean = False, Optional PortNr As Integer = 21, _
  Optional Method As String = "LIST")
 
			Dim sFileList As New List(Of String)
			Dim response As FtpWebResponse
			Dim ftpURI As System.Uri
			'Mach eine kurze Pause
			System.Threading.Thread.Sleep(1500)
			_CurrentURIPath = "ftp://" & FTP_REMOTE_SERVER_ADDR & Path
			ftpURI = New System.Uri(_CurrentURIPath)
 
			request = CType(Net.FtpWebRequest.Create(ftpURI), FtpWebRequest)
			request.Method = Method
			request.Credentials = New Net.NetworkCredential(FTP_LOGIN_USER, _
  FTP_LOGIN_PWD)
			request.KeepAlive = False
			request.Proxy = Nothing
			request.UsePassive = True
			request.EnableSsl = UseSSL
			request.UseBinary = True
			If UseSSL Then
				ServicePointManager.ServerCertificateValidationCallback = AddressOf _
  AcceptAllCertifications
				ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
				ServicePointManager.FindServicePoint(ftpURI)
			End If
 
			System.Threading.Thread.Sleep(250)
			If FTP_REQUEST Is Nothing Then
				response = CType(request.GetResponse, FtpWebResponse)
				eNotif.OutMessage(response.WelcomeMessage)
			Else
				ExecCmd(request)
			End If
			FTP_REQUEST = request
 
		End Sub
		Public Sub ExecCmd(ByVal request As FtpWebRequest)
			eNotif.OutMessage(getStatusDescription(request))
		End Sub
		Public Function getStatusDescription(ByRef request As FtpWebRequest) As String
			Dim response As FtpWebResponse
			Try
				If request IsNot Nothing Then
					response = CType(request.GetResponse, FtpWebResponse)
					Return response.StatusDescription
				Else
					Throw New Exception("Err: No valid request object found")
				End If
			Catch ex As Exception
				_LogError.WriteError(ex)
				MsgBox(ex.Message)
			End Try
		End Function
Ein Problem besteht hier u.a. darin, dass bsds. bei mehreren Dateien in einer Queue der FTP-Server nach dem (überraschend) erfolgreichen Upload einer Datei bei der nächsten Datein gewöhnlich Fehler und Exceptions gemeldet werden:

z.B.: 500 oder auch 226 (Transfer Complete)

Beim letzteren würde ich in die Hände klatschen, wenn da denn wirklich der Statuscode 226 übermittelt würde, kann ihn aber nicht wirklich abfangen.

Die FTP-Klasse ist ein wichtiger Pfeiler eines Projekts. Da ich nicht das Rad neu erfinden möchte:
kennt jemand evtl. einen anderen funktionsfähigen und zuverlässigen Ansatz ?

Vielen Dank,
Stephan

__________________


Heute ist nicht mein Tag.

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel