PDA

View Full Version : [VB 2010] - Controllare file su FTP


lucausa75
21-12-2010, 19:27
Salve ragazzi,

con questa porzione di codice riesco a collegarmi ad un mio FTP:

Public Function CheckIfFileContains(ByVal Path As String, ByVal SearchStr As String) As Boolean
Dim RetList = New List(Of String)

If (Path = Nothing Or Path = "") Then
Path = "/"
End If

_FtpRequest = CType(WebRequest.Create("ftp://" + _Host + Path), FtpWebRequest)
_FtpRequest.Credentials = New NetworkCredential(_UserName, _Password)
_FtpRequest.UsePassive = False
_FtpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails
_FtpRequest.EnableSsl = _UseSSL
_FtpRequest.Proxy = Nothing
_FtpResponse = CType(_FtpRequest.GetResponse(), FtpWebResponse)

vorrei aggiungere le righe di codice necessarie in modo da verificare se tra i file nell'FTP c'è qualcuno il cui nome contiene una stringa da me prescelta e che fa diventare la funzione di cui sopra CheckIfFileContains TRUE...

MarcoGG
21-12-2010, 20:51
Già provato con qualcosa come :
Public Function CheckIfFtpFileExists(ByVal fileUri As String) As Boolean
Dim request As FtpWebRequest = WebRequest.Create(fileUri)
request.Credentials = New NetworkCredential("username", "password")
request.Method = WebRequestMethods.Ftp.GetFileSize

Try
Dim response As FtpWebResponse = request.GetResponse()
' THE FILE EXISTS
Catch ex As WebException
Dim response As FtpWebResponse = ex.Response
If FtpStatusCode.ActionNotTakenFileUnavailable = response.StatusCode Then
' THE FILE DOES NOT EXIST
Return False
End If
End Try
Return True
End Function

?

lucausa75
22-12-2010, 08:10
Già provato con qualcosa come :
Public Function CheckIfFtpFileExists(ByVal fileUri As String) As Boolean
Dim request As FtpWebRequest = WebRequest.Create(fileUri)
request.Credentials = New NetworkCredential("username", "password")
request.Method = WebRequestMethods.Ftp.GetFileSize

Try
Dim response As FtpWebResponse = request.GetResponse()
' THE FILE EXISTS
Catch ex As WebException
Dim response As FtpWebResponse = ex.Response
If FtpStatusCode.ActionNotTakenFileUnavailable = response.StatusCode Then
' THE FILE DOES NOT EXIST
Return False
End If
End Try
Return True
End Function

?

...ci avevo pensato ma non riesco ad implementarla; cercavo qualcosa come una sorta di ciclo for che analizzasse tutti i file di una directory FTP e se il file esaminato contiene una stringa STR riempiva una variabile

lucausa75
22-12-2010, 11:04
Eccola quì fresca fresca di sviluppo:

Public Function CheckIfFileContain(ByVal Path As String, ByVal SearchStr As String, ByVal _Username As String, ByVal _Password As String) As String
Dim Request As FtpWebRequest = WebRequest.Create(Path)
Request.Credentials = New NetworkCredential(_Username, _Password)
Request.UsePassive = False
Request.Method = WebRequestMethods.Ftp.ListDirectory
Request.EnableSsl = _UseSSL
Request.Proxy = Nothing

Dim Response As FtpWebResponse = Request.GetResponse()
Dim Streamer As Stream = Response.GetResponseStream()
Dim Reader As New StreamReader(Streamer)
Dim StrLine As String
Dim CountContains As Integer

Do
StrLine = Reader.ReadLine
If StrLine <> Nothing Then
If InStr(StrLine, SearchStr) > 0 Then
CountContains = CountContains + 1
End If
End If
Loop While StrLine <> Nothing

Select Case CountContains
Case 0
Return False
Case Else
Return True
End Select

End Function

MarcoGG
22-12-2010, 11:17
Ottimo, e funzia ?

lucausa75
22-12-2010, 11:32
Ottimo, e funzia ?

Funziona di lusso!
:D