Bonjour tout le monde,
Aprés l'utilisation d'une méthode qui permet la connexion à un serveur ftp et de copier des fichiers j'ai le message suivant :
------------------------------------------------------------------------------------------------
-la connexion sous-jacente a été fermée:une erreur inattendue s'est produite lors de la réception-
------------------------------------------------------------------------------------------------
Rq:j'ai fais des tests avec d'autre serveur ftp ça marche tres bien
mais avec mon serveur ça donne l'erreur
Merci pour votre aide.
voila la méthode :
----------------------
Private Sub downloadFichier(ByVal strUrlFichier As String, _
ByVal strCheminDestinationFichier As String, _
ByVal identifiant As String, _
ByVal motDePasse As String)
' strUrlFichier : Uri du fichier sur le serveur FTP
' strCheminDestinationFichier : Uri du fichier sur le disque dur
' identifiant : login du compte FTP utilisé
' motDePasse : mot de passe du compte FTP utilisé
' Instanciation de deux Uri qui vont contenir les chemins source et destination
Dim monUriFichier As New System.Uri(strUrlFichier)
Dim monUriDestinationFichier As New System.Uri(strCheminDestinationFichier)
' Vérification de la validité de l'Uri du fichier sur le serveur FTP
If Not (monUriFichier.Scheme = Uri.UriSchemeFtp) Then
MessageBox.Show("L'Uri du fichier sur le serveur FTP n'est pas valide", _
"Une erreur est surevnue", MessageBoxButtons.OK, MessageBoxIcon.Warning)
' Si Uri non valide, arrêt du téléchargement
Exit Sub
End If
' Vérification de la validité de l'Uri de l'emplacement du fichier de destination
If Not (monUriDestinationFichier.Scheme = Uri.UriSchemeFile) Then
MessageBox.Show("Le chemin de destination n'est pas valide !", _
"Une erreur est surevnue", _
MessageBoxButtons.OK, MessageBoxIcon.Warning)
' Si Uri non valide, arrêt du téléchargement
Exit Sub
End If
' Création des 2 flux et du reader nécessaire pour la récupération du fichier
Dim monResponseStream As Stream = Nothing
Dim monFileStream As FileStream = Nothing
Dim monReader As StreamReader = Nothing
Try
' Requête demandant le fichier se trouvant sur le serveur FTP
Dim downloadRequest As FtpWebRequest = CType(WebRequest.Create(monUriFichier), FtpWebRequest)
' Vérification de la présence des identifiants d'un compte, si aucun alors
' la connexion se fait en mode anonyme
If Not identifiant.Length = 0 Then
Dim monCompteFtp As New NetworkCredential(identifiant, motDePasse)
downloadRequest.Credentials = monCompteFtp
End If
' Flux de données issu du fichier sur le serveur FTP
'//////////////////////////////////////////////////////////
Dim downloadResponse As FtpWebResponse = CType(downloadRequest.GetResponse, FtpWebResponse)
monResponseStream = downloadResponse.GetResponseStream()
' Chemin de destination du fichier sur le disque dur
Dim nomFichier As String = monUriDestinationFichier.LocalPath.ToString
' Création du fichier de destination sur le disque dur
monFileStream = File.Create(nomFichier)
' Tableau d'octets qui va contenir les données issues du flux
Dim monBuffer(1024) As Byte
Dim octetsLus As Integer
' Lecture du buffer, puis écriture des données dans le fichier
While True
' Lecture du flux
octetsLus = monResponseStream.Read(monBuffer, 0, monBuffer.Length)
If octetsLus = 0 Then
Exit While
End If
' Ecriture dans le fichier
monFileStream.Write(monBuffer, 0, octetsLus)
End While
MessageBox.Show("Téléchargement effectué.")
' Gestion des exceptions
Catch ex As UriFormatException
MessageBox.Show(ex.Message)
Catch ex As WebException
MessageBox.Show(ex.Message)
Catch ex As IOException
MessageBox.Show(ex.Message)
Finally
' Fermeture du reader et des deux streams si nécessaire
If Not (monReader Is Nothing) Then
monReader.Close()
ElseIf Not (monResponseStream Is Nothing) Then
monResponseStream.Close()
End If
' Fermeture du flux et du fichier
If Not (monFileStream Is Nothing) Then
monFileStream.Close()
End If
End Try
End Sub
----------------------
et voila l'appel:
downloadFichier("ftp://monserveur", "destination", "user", "mdp")