Télécharger un fichier depuis un serveur FTP

ThomasIsComingBack Messages postés 33 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 6 mars 2013 - 31 janv. 2012 à 12:27
ThomasIsComingBack Messages postés 33 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 6 mars 2013 - 1 févr. 2012 à 12:32
Bonjour,
J'aimerais savoir comment je pourrais faire pour télécharger un fichier sur mon serveur FTP (avec Login et Mot De Passe). Pour l'instant j'ai essayé plusieurs trucs mais rien ne fonctionne vraiment. Je précise que je ne peux mystérieusement pas télécharger mon fichier en HTTP parce que l'hébergeur l'empêche (? bizarre non ?). Sauriez vous comment faire ?
Pour l'instant mon code est le suivant




Merci

2 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
31 janv. 2012 à 14:22
Salut,

Qu'as-tu essayé jusqu'à présent ? Peux-tu nous montrer ton code ? Pour ton fichier en HTTP, si le serveur te refuse l'accès à un fichier tu dois avoir le code d'erreur (Ex: 403, 404, 500) et en fonction de ça tu sais pourquoi ça ne fonctionne pas.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
ThomasIsComingBack Messages postés 33 Date d'inscription lundi 19 juillet 2010 Statut Membre Dernière intervention 6 mars 2013
1 févr. 2012 à 12:32
Salut !
Désolé ! Je t'ai dit une bêtise, j'arrive à télécharger le fichier, mais il est vide ! Voici mon code :
    Private Sub BoutonTelecharger_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BoutonTelecharger.Click
        If UFI.Text <> "" Then 'Ca c'est la textbox contenant le nom du fichier

            If Extension.Text = "" Then
                MsgBox("Merci de rentrer l'extension du fichier !", vbOKOnly, "Erreur")
            Else

                Dim DossierOuMettreLeFichier
                Dim ExtensionFilter = "Fichiers" & Extension.Text
                Dim ExtensionFilterSystem = "*." & Extension.Text

                With ChoisirNomFichier
                    .InitialDirectory = Environ("USERPROFILE")
                End With

                ChoisirNomFichier.ShowDialog()

                DossierOuMettreLeFichier = Mid(ChoisirNomFichier.FileName, 1, InStrRev(ChoisirNomFichier.FileName, ""))
                Debug.Print(DossierOuMettreLeFichier)

                Debug.Print(Directory & UFI.Text & "." & Extension.Text)
                FtpDownload(New Uri(Directory & UFI.Text & "." & Extension.Text), _
                New NetworkCredential(UserName, "motdepasse"), _ 'Mon vrai mot de passe est mieux
                New DirectoryInfo(DossierOuMettreLeFichier))



            End If
        Else
            MsgBox("Merci de rentrer le code de téléchargement !", vbCritical, "Erreur")
        End If
    End Sub


Et je sais que ce code est en lien avec celui ci, je l'ai récupéré sur Internet :

    Public Shared Function FtpDownload(ByVal uri As Uri, ByVal credentials As NetworkCredential, ByVal dirInfo As DirectoryInfo) As FileInfo
        Dim fi As FileInfo
        Dim request As FtpWebRequest = DirectCast(WebRequest.Create(uri), FtpWebRequest)
        request.Credentials = credentials
        request.UseBinary = True
        request.Method = WebRequestMethods.Ftp.DownloadFile
        'Utilisé pour envoyer la commande "QUIT" au serveur afin de fermer correctement la connexion
        request.KeepAlive = False
        ' Taille du tableau servant à stocker les morceaux du fichier.
        ' On épargne ainsi les ressources du serveur en ne chargeant pas la totalité du fichier.
        ' Cela permet de transférer rapidement des fichiers volumineux.
        Dim buffer As Byte() = New Byte(2047) {}
        ' Variable de mesure de la taille du morceau de fichier lu. Permet d'indiquer que le fichier a été lu et écrit en totalité.
        ' Recupération de la réponse
        Using res As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)
            fi = New FileInfo(String.Concat(dirInfo.FullName, uri.Segments(uri.Segments.Length - 1)))
            Using stream As New BinaryReader(res.GetResponseStream())
                Using fs As FileStream = File.Create(fi.FullName, buffer.Length, FileOptions.WriteThrough)
                    ' Ecriture du flux dans le fichier block par block
                    Dim block As Integer
                    While ((block = stream.Read(buffer, 0, buffer.Length)) > 0)
                        fs.Write(buffer, 0, block)
                    End While
                End Using
            End Using
        End Using
        Return fi
    End Function


Merci de m'aider !
0
Rejoignez-nous