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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
Private Sub uploadFichier(ByVal cheminSource As String, ByVal urlDestination As String, _
ByVal identifiant As String, ByVal motDePasse As String)
' cheminSource : Uri du fichier sur le disque dur
' urlDestination : Uri du fichier de destination sur le serveur FTP
' identifiant : login du compte FTP utilisé
' motDePasse : mot de passe du compte FTP utilisé
' Création des 2 flux et du reader nécessaire pour l'envoi du fichier
Dim monRequestStream As Stream = Nothing
Dim fileStream As FileStream = Nothing
Dim uploadResponse As FtpWebResponse = Nothing
Try
' Requête d'upload d'un fichier vers le serveur
Dim uploadRequest As FtpWebRequest = CType(WebRequest.Create(urlDestination), FtpWebRequest)
Dim monCompte As New NetworkCredential(identifiant, motDePasse)
With uploadRequest
.Credentials = monCompte
.Method = WebRequestMethods.Ftp.UploadFile
.EnableSsl = UseSSL
.KeepAlive = False
.Proxy = Nothing
.UseBinary = True
.UsePassive = Passive
.Timeout = TimeOut
End With
MyDebug("Upload File:" & cheminSource, 4)
monRequestStream = uploadRequest.GetRequestStream()
MyDebug("Open Local File", 4)
fileStream = File.Open(cheminSource, FileMode.Open, FileAccess.Read, FileShare.Read)
MyDebug("Open Stream:" & cheminSource, 4)
' Tableau d'octets qui va contenir les données issues du fichier
Dim buffer(2048) As Byte
Dim bytesRead As Integer
' Lecture des données et envoi de celle-ci dans le flux
While True
bytesRead = fileStream.Read(buffer, 0, buffer.Length)
If bytesRead = 0 Then
Exit While
End If
' Ecriture des données dans le flux d'upload vers le serveur FTP
monRequestStream.Write(buffer, 0, bytesRead)
TotalLen = TotalLen + bytesRead
End While
'L'objet requestStream dot être fermé avant de récupérer la réponse
monRequestStream.Close()
' MyDebug("Close Stream", 5)
' uploadResponse = CType(uploadRequest.GetResponse(), FtpWebResponse)
GoodSend += 1
' Gestion des exceptions
Catch ex As UriFormatException
MyDebug(ex.Source.ToString & vbTab & "Send Failed(Uri):" & ex.Message & " " & ex.Source, 1)
FaileSend = FaileSend + 1
Catch ex As WebException
MyDebug(ex.Source.ToString & vbTab & "Send Failed(Web):" & ex.Message, 1)
FaileSend = FaileSend + 1
Catch ex As IOException
MyDebug(ex.Source.ToString & vbTab & "Send Failed(IO):" & ex.Message, 1)
FaileSend = FaileSend + 1
Finally
' Fermeture des différents flux utilisés
If uploadResponse IsNot Nothing Then
uploadResponse.Close()
End If
If fileStream IsNot Nothing Then
fileStream.Close()
End If
If monRequestStream IsNot Nothing Then
monRequestStream.Close()
End If
End Try
End Sub |
Partager