IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Gestion des fichiers FTP


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 16
    Points : 11
    Points
    11
    Par défaut Gestion des fichiers FTP
    Bonjour a tous,

    Je développe en vb.net une application permettant des transfert, download, upload etc sur un serveur FTP. Mon premier problème est l'affichage dans un grd des dossiers/fichiers (simple a afficher grâce a ftp.ListDirectory ) mais les 2 autres colonnes doivent contenir la taille du fichier/dossier et l'autre la date de modification.. or la commande ftp.ListDirectoryDetails me donne ces informations en me renvoyant un list NLST du type :

    02-01-13 04:25PM <DIR> tech

    Ma première solution été donc de séparer cette chaine de caractère avec split() ou encore mid() mais je me suis rendu compte que cette liste été différente d'un serveur à un autre, exemple d'un autre serveur :

    drwxr-xr-x 2 orval orval 24576 Feb 27 10:56 factures

    A ce moment ma technique d'utilisation des chaines de caractères deviennent inutile...

    Je demande donc votre aide pour une solution générique qui marcherai avec tous types de serveurs par exemple si les listes NLST on des fonctions spécial pour récupérer la date le type de fichier/dossier etc.

    Merci d'avance

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Petite précision :
    Il existe des serveurs UNIX et d'autre windows, le détail qui met retourné est donc différents a chaque fois..
    J'ai remarqué qu'il y avait des propriétés ftp telle GetFileZizie et GetDateTimestamp et j'aimerai me servir de celles-ci mais personne ne donne d'explication sur internet a part du banal msdn sans 1 seul exemple

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim f As System.Net.FtpWebRequest = DirectCast(System.Net.FtpWebRequest.Create("ftp:/leftp.fr/nomfichier"), System.Net.FtpWebRequest)
    f.Method = System.Net.WebRequestMethods.Ftp.GetFileSize
    Dim r = f.GetResponse
    la réponse se trouve sur r visiblement (il n'y a pas de stream en retour) (j'ai pas noté le nom de le propriété)

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    J'ai essayer votre code mais sans succès.. J'ai donc voulu rajouter un .Credentials a la requête FTP mais je tombe encore sur cette erreur :

    http://www.hostingpics.net/viewer.ph...234Capture.png

    Je ne sais pas si ca peut vous aider

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    le texte est assez explicite err 550 fichier introuvable ...

    les ftp sont en général sensible à la casse

    votre syntaxe pour l'accès au ftp ressemblait à ca avant ?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Au départ je chargeais tous les détail de mes fichiers et je gérais le string avec des découpe split/mid etc.. J'ai voulu reprendre la même syntaxe pour la connexion mais il me parais logique qu'il faille spécifier en paramètre le fichier pour lequel on a besoin d'informations comme la taille, mais aucun paramètre n'est requis.. J'ai voulu mettre en dur l'adresse d'un fichier sur le FTP mais aucun résultat.
    Voilà mon code pour la connexion et l'affichage des détails de mes fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    fwr = FtpWebRequest.Create("ftp://" & txtFtpHost.Text & "/")
                fwr.Credentials = New NetworkCredential(txtUserName.Text, txtPassword.Text)
     
            End If
     
            Me.Cursor = Cursors.WaitCursor
            Me.Enabled = True
     
            If RdoFTP.Checked = True Then
     
                fwr.Method = Net.WebRequestMethods.Ftp.ListDirectoryDetails
                Dim sr As New StreamReader(fwr.GetResponse().GetResponseStream())   'réponse du serveur
     
                Dim str As String = sr.ReadLine()
     
                Grd1.Rows.Clear()
                While Not str Is Nothing        'Boucle pour remplir le gridView avec les détails des fichiers
     
                    If InStr(str, ":") <> 0 Then
     
                        Dim tb = Split(str, " ")
                        Dim tbdate = Split(str, ":")
                        Dim MaxG = Len(tbdate(0))
                        Dim MaxD = Len(tbdate(1))
                        Dim taille = Split(tbdate(0), " ")
                        Dim test = taille(UBound(taille) - 3)
     
                        If Mid(str, 1, 1) = "d" Then
                            'Test si l'élément est un fichier ou un dossier
                            If IsNumeric(test) Then
                                'test pour éviter l'erreur de la date qui n'a pas toujours deux caratères (1 novembre <> 01 novembre)
     
                                Grd1.Rows.Add(imgDoss, Mid(tbdate(1), 4, MaxD), taille(UBound(taille) - 3), (Mid(tbdate(0), MaxG - 9, 11) & ":" & Mid(tbdate(1), 1, 2)), "dossier")
     
                            Else
     
                                Grd1.Rows.Add(imgDoss, Mid(tbdate(1), 4, MaxD), taille(UBound(taille) - 4), (Mid(tbdate(0), MaxG - 9, 11) & ":" & Mid(tbdate(1), 1, 2)), "dossier")
     
     
                            End If
                        Else
                            If IsNumeric(test) Then
     
                                Grd1.Rows.Add(imgFich, Mid(tbdate(1), 4, MaxD), taille(UBound(taille) - 3), (Mid(tbdate(0), MaxG - 9, 11) & ":" & Mid(tbdate(1), 1, 2)), "fichier")
     
     
                            Else
     
                                Grd1.Rows.Add(imgFich, Mid(tbdate(1), 4, MaxD), taille(UBound(taille) - 4), (Mid(tbdate(0), MaxG - 9, 11) & ":" & Mid(tbdate(1), 1, 2)), "fichier")
     
     
                            End If
                        End If
     
                    End If
                    str = sr.ReadLine()
                End While
     
                sr.Close()
     
                sr = Nothing
     
            End If
            Me.Cursor = Cursors.Default
    fwr est en varglob

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    J'ai trouvé la solution qu'il me fallait!
    J'utilise un client ftp et j'ai remarqué que les listes retournées par la classe FTPClient.ListDirectoryDetail étaient normalisées : du 43 ème au 54 ème caractère on trouvait la date etc... Je donne le code pour ceux que ça peut intéresser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Dim fullList As FTPdirectory = monclient.ListDirectoryDetail("/")
     
                    Dim i As Integer
                    For i = 0 To fullList.LongCount - 1
     
                        If fullList.Item(i).FileType.ToString = "Directory" Then
     
                            Grd1.Rows.Add(imgDoss, fullList.Item(i).Filename, fullList.Item(i).Size, fullList.Item(i).FileDateTime, "dossier")
     
                        Else
     
                            Grd1.Rows.Add(imgFich, fullList.Item(i).Filename, fullList.Item(i).Size, fullList.Item(i).FileDateTime, "fichier")
     
                        End If
                    Next

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.0] Serveur FTP et gestion des fichiers à distance
    Par goofyto8 dans le forum Langage
    Réponses: 1
    Dernier message: 11/10/2014, 14h41
  2. gestion des fichiers et dossiers avec FTP
    Par ahmeds dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 12/10/2006, 13h09
  3. [VBA-E] gestion des fichiers ouverts ...
    Par SpaceFrog dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 20/01/2006, 17h10
  4. [FTP] Gestion des fichiers Online ?
    Par MaTHieU_ dans le forum Langage
    Réponses: 9
    Dernier message: 23/10/2005, 15h16
  5. Gestion des fichiers
    Par roger12 dans le forum Administration système
    Réponses: 2
    Dernier message: 19/10/2005, 09h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo