Partage
  • Partager sur Facebook
  • Partager sur Twitter

VB.net 2015 FTP File Sync

Sujet résolu
    24 février 2019 à 9:47:20

    Bonjour tout le monde,

    Je reviens vers vous pour un petit problème dans ma source, enfaite exactement 3 petits problèmes.
    Donc enfaite je vous explique, j'essais de ravoir le code source de la vidéo disponible ci-dessous : 
    https://www.youtube.com/watch?v=E5qSxrbrf9I

    J
    'ai eu pas mal d'erreur enfin résolue il ne me reste que les 3 ici que je ne comprend trop bien.


    Gravité	Code	Description	Projet	Fichier	Ligne	État de la suppression
    Erreur	BC31143	La méthode 'Private Sub File_Downloaded(sender As Object, e As AsyncCompletedEventArgs)' n'a pas de signature compatible avec le délégué 'Delegate Sub DownloadProgressChangedEventHandler(sender As Object, e As DownloadProgressChangedEventArgs)'.	ServerToHome	c:\users\raw\documents\visual studio 2015\Projects\ServerToHome\ServerToHome\Form1.vb	81	Actif
    Erreur	BC30311	Impossible de convertir une valeur de type 'FtpWebResponse' en 'FtpWebRequest'.	ServerToHome	c:\users\raw\documents\visual studio 2015\Projects\ServerToHome\ServerToHome\Form1.vb	37	Actif
    Erreur	BC30456	'GetResponseStream' n'est pas un membre de 'FtpWebRequest'.	ServerToHome	c:\users\raw\documents\visual studio 2015\Projects\ServerToHome\ServerToHome\Form1.vb	38	Actif
    

    Voici ma page FTPManager.vb (Class)

    Public Class FTPManager
        Private Shared ConfigFile As String =
            Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) & "\config.txt"
    
        Public Shared Folder As String = "Client_Pokemonia"
        Public Shared ServerRootPatch As String
        Public Shared User As String
        Public Shared PW As String
    
        Public Shared Sub loadConfig()
            If IO.File.Exists(ConfigFile) Then
                Dim lines = IO.File.ReadAllLines(ConfigFile)
                ServerRootPatch = lines(0)
                User = lines(1)
                PW = lines(2)
            End If
        End Sub
    End Class
    



    Voici ma page Form1.vb

    Imports System.ComponentModel
    Imports System.Net
    
    Public Class Form1
        Private LocalPath As String = "Downloadedfiles"
        Private missingFiles As New List(Of String)
    
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            FTPManager.loadConfig()
            createLocalFolderIfNotExistes()
            btnRefresh.performClick()
    
        End Sub
    
        Private Sub createLocalFolderIfNotExistes()
            If Not IO.Directory.Exists(LocalPath) Then IO.Directory.CreateDirectory(LocalPath)
        End Sub
    
        Private Sub getLocalFiles()
            dgvLocal.Rows.clear
            Dim files = IO.Directory.GetFiles(LocalPath)
            If files.Count > 0 Then
                For Each f In files
                    Me.dgvLocal.Rows.Add(f.Split("\c").Last())
    
                Next
            End If
        End Sub
    
        Private Sub getFTPFiles()
            dgvFTP.Rows.Clear()
            missingFiles.Clear()
            Dim request = FtpWebRequest.Create(FTPManager.ServerRootPatch)
            request.Method = WebRequestMethods.Ftp.ListDirectory
            request.Credentials = New NetworkCredential(FTPManager.User, FTPManager.PW)
            Dim response As FtpWebRequest = CType(request.GetResponse(), FtpWebResponse)
            Using myReader As New IO.StreamReader(response.GetResponseStream())
                Do Until Not myReader.EndOfStream
                    Dim file = myReader.ReadLine()
                    Me.dgvFTP.Rows.Add(file)
    
                    If Not IO.File.Exists(LocalPath & "\" & file) Then
                        dgvFTP.Rows(dgvFTP.Rows.Count - 1).defaultCellStyle.BackColor = Color.FromArgb(255, 192, 192)
                        missingFiles.Add(file)
                    Else : dgvFTP.Rows(dgvFTP.Rows.Count - 1).DefaultCellStyle.BackColor = Color.FromArgb(192, 255, 192)
                    End If
                Loop
            End Using
        End Sub
        Private Sub btnRefresh_Click(sender As Object, e As EventArgs) Handles btnRefresh.Click
                If Not btnRefresh Then
                btnRefresh.Enabled = False
             Await Task.Delay(2000)
              getLocalFiles()
            getFTPFiles()
             btnSync.Enabled = True
             Else : MessageBox.Show("please wait")
    
             End If
            dgvFTP.ClearSelection()
            dgvLocal.ClearSelection()
    
        End Sub
        Private Sub btnSync_Click(sender As Object, e As EventArgs) Handles btnSync.Click
            If missingFiles.Count > 0 Then
                Donwload_File(New Uri(FTPManager.ServerRootPatch & FTPManager.Folder & "/" & missingFiles(0)))
            Else : MessageBox.Show("No files to downlaod")
            End If
        End Sub
    
        Private Sub Donwload_File(URI As Uri)
            Dim filename = URI.ToString().Split("/c").Last()
            prgb.Value = 0
            'lblFile.text = filename
            Using wc As New WebClient
                wc.Credentials = New NetworkCredential(FTPManager.User, FTPManager.PW)
                AddHandler wc.DownloadProgressChanged, AddressOf File_DLProgressChanged
                AddHandler wc.DownloadProgressChanged, AddressOf File_Downloaded
                wc.DownloadFileAsync(URI, LocalPath & "\" & filename)
            End Using
        End Sub
        Private Sub File_DLProgressChanged(sender As Object, e As DownloadProgressChangedEventArgs)
            prgb.Value = e.ProgressPercentage
        End Sub
        Private Sub File_Downloaded(sender As Object, e As AsyncCompletedEventArgs)
            Dim deletedFile = missingFiles(0)
            missingFiles.RemoveAt(0)
    
            If missingFiles.Count > 0 Then
                Donwload_File(New Uri(FTPManager.ServerRootPatch & FTPManager.Folder & "/" & missingFiles(0)))
            Else
                btnRefresh.PerformClick()
                MessageBox.Show("niquel")
            End If
        End Sub
        Private Sub dgvLocal_SelectedIndexChanged(sender As Object, e As EventArgs)
        End Sub
    End Class
    



    Je vous remercie d'avance ! Car la j'ai vraiment du mal !

    • Partager sur Facebook
    • Partager sur Twitter

    Cordialement, LinkoLabs

      25 février 2019 à 11:21:37

      Toujours commencer par la première erreur.

      Votre "File_Downloaded" n'a pas la bonne signature, et dans ce type d'erreur, le compilateur a toujours raison.

      Pourquoi votre "File_Downloaded" ne respecte pas cette signature ?

      Pour moi, Vous vous êtes planté d'Event, c'est plutôt l'event "DownloadFileCompleted"

      https://docs.microsoft.com/fr-fr/dotnet/api/system.net.webclient.downloadfilecompleted?view=netframework-4.7.2

      que l'event "DownloadProgressChanged" qui vous intéresse.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

      VB.net 2015 FTP File Sync

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown