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 :

Transmission d'un fichier en ftp mais en mode binary


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut Transmission d'un fichier en ftp mais en mode binary
    Bonjour,

    Actuellement je développe un petit programme pour automatiser une procédure de mise à jour d'un petit serveur linux.

    J'effectue des opérations sur le port COM, sa c'est bon.
    Et je dois envoyer l'image Linux par ftp.


    J'arrive sans souci a me connecter en ftp mais impossible d'envoyer le fichier. Sur le serveur il est bien présent mais avec 0 octet et j'ai une erreur de transmission.

    Je suppose que c'est le fait qu'il faut passer le serveur en mode binaire.

    Les commandes que je dois effectuées avec un terminal Windows en mode ftp sont:
    (A partir du répertoire ou se trouve linux.bin bien sur)


    cd /home
    bin
    put linux.bin


    Merci de votre aide

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    il y a des classes dans le framework pour dialoguer avec un serveur ftp

    http://archive.loicrebours.fr/index....ndes-ftp-en-c/
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    il y a des classes dans le framework pour dialoguer avec un serveur ftp

    http://archive.loicrebours.fr/index....ndes-ftp-en-c/

    Merci Pol63, j'était partie avec du code trouvé bien plus complexe, je vais étudier cela, merci encore.

  4. #4
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    J'ai un petit souci avec ce que j'ai adapté.

    Voici mon code pour envoyer le fichier linux.bin en ftp

    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
     
     Public Sub ftpConnect()
     
            Try
                Dim myadress As String = "ftp://" & "192.168.42.20 & "/home/linux.bin"
                Dim serverUri As Uri = New Uri(myadress)
                If serverUri.Scheme <> Uri.UriSchemeFtp Then
                    Return
                End If
                Dim myRequest As FtpWebRequest = DirectCast(WebRequest.Create(serverUri), FtpWebRequest)
                myRequest.Credentials = New NetworkCredential(iniLogin, iniPass)
                myRequest.Method = WebRequestMethods.Ftp.UploadFile
                myRequest.UsePassive = True
                myRequest.UseBinary = True
                myRequest.KeepAlive = False
                Dim File() As Byte = System.IO.File.ReadAllBytes(LinuxFile) 'LinuxFile = D:\linux.bin
                Dim UpFile As System.IO.Stream = myRequest.GetRequestStream()
     
                UpFile.Write(File, 0, File.Length)
                UpFile.Close()
                UpFile.Dispose()
     
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
     
        End Sub
    Cela plante sur UpFile.Write(File, 0, File.Length)

    Le message lors de l’exception est:
    The underlying connection was closed: un unexpected error occurred on a receive
    Le ex.Tostring m'indique:


    En ligne 338 c'est UpFile.Close() mais il ne si arrête pas !!

    J'ai testé avec : Dim myadress As String = "ftp://" & "192.168.42.20 & "/home"
    sans mettre linux.bin mais la il me dit que je n'est pas donner de nom au fichier.


    Mais il me semble qu'il a fonctionné 1 fois car j'ai fait plein d'essaie mais la plus rien. Je précise que je reset complètement le serveur Linux à chaque fois car c'est le reste qui lance ma procédure d’écoute du port COM.

    Le serveur linux m'envoie sur le port COM immediatemetn aprés le : UpFile.Write(File, 0, File.Length)
    fault-common.c 387
    Unhandled fault: external abort on line(F4) at 0x00000001
    fault-common.c(97): start_code=0x308040, start_stack=0x335f64


    Une fois que cela fonctionnera!!! j'aimerai savoir s'il y a un moyen de connaitre son avancement car il faut plus d'une minute pour transférer le fichier et l’opérateur risque de s'impatienter.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    en 1er lieu je testerais en fonction de keepalive et usepassive
    sinon quel est le type de l'exception ? y a t il une innerexception ?

    sinon il y a la classe webclient aussi qui elle a des évènements de progression et doit fonctionner sur du ftp, par contre pas sûr qu'on puisse dire binary, mais ca reste à essayer
    sinon il faut faire write dans une boucle avec x octets et donc à chaque tour de bouble tu pourras connaitre la progression, le tout avec backgroundworker pour être sur un autre thread et avoir des events de progression
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Merci encore Pol63 je vais suivre tes conseils.

    Le petit serveur linux plante parfois sans raison aussi lorsque l'on utilise les commandes dans un terminal pour ce transfert ftp. Mais la c'est immédiat ou presque et le serveur n'a pas l'air d'être bloqué, j'arrive encore à faire du telnet dessus.

    Merci pour l'idée du Write en boucle, tout bête mais je n'y est pas pensé.


    [edit]
    Je ne sais pas exactement ce que vous voulez dire par type d’exception. Sur l’erreur, catch, en titre c'est noté "Interception de WebException"


    Je viens de jouer avec UsePassive et KeepAlive mais cela change rien.

Discussions similaires

  1. [Python 2.X] Upload de fichier sur un serveur FTP mais à quelle vitesse ?
    Par nekcorp dans le forum Général Python
    Réponses: 36
    Dernier message: 31/10/2014, 16h57
  2. [2008] Non réception de fichiers en FTP mais pas d'erreur
    Par StitchP dans le forum SSIS
    Réponses: 0
    Dernier message: 05/10/2012, 10h42
  3. fichier .xml via ftp mais file_put_contents le tronque
    Par Garra dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/09/2011, 13h29
  4. Envoi de fichier par FTP mais nommé différent
    Par whorian dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/03/2009, 17h04

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