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

ASP.NET Discussion :

Problème d'envoi de fichiers par FTP


Sujet :

ASP.NET

  1. #21
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Bon apparemment, il faut prendre certaines précautions en VB. Voici un code VB qui marche
    Code vb : 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
    Public Function FtpUpload(ByVal uri As Uri, ByVal credentials As NetworkCredential, ByVal fileInfo As FileInfo) As Boolean
    
        Dim request As FtpWebRequest = DirectCast(FtpWebRequest.Create(Path.Combine(uri.AbsoluteUri, fileInfo.Name)), FtpWebRequest)
        request.Method = WebRequestMethods.Ftp.UploadFile
        request.Credentials = credentials
        request.UseBinary = True
        request.KeepAlive = False
        request.UsePassive = True
    
        Dim buffer As Byte() = New Byte(2047) {}
    
        Using stream As Stream = request.GetRequestStream()
            Using fs As FileStream = File.OpenRead(fileInfo.FullName)
                Dim block As Integer = buffer.Length
                While (block = fs.Read(buffer, 0, buffer.Length))
                    stream.Write(buffer, 0, block)
                End While
            End Using
        End Using
        Return True
    End Function
    J'ai mis en évidence les différences.

    A+

  2. #22
    Débutant   Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Points : 213
    Points
    213
    Par défaut
    C'est pas grave sa doit être une caractéristique que vb ne supporte pas par rapport au C#.
    C'est dingue pourquoi les grand développeurs sont toujours plongés dans le C# au d&triment de VB? Vous êtes sûrs que vous nous cachez rien?
    Voila un code qui passe mais un peu étrange quand même:
    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
       Protected Sub cmdUpload_Click (ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdUpload.Click
     
    uploadFileUsingFTP( "ftp://*.*.*.*/rand.txt" , "C:\Inetpub\wwwroot\rand.txt", "Immobilis", "Sonny") 
    lblMsg.Text = "Le fichier téléchargé avec succès:)" 
     
    End Sub
     
     
    Public Sub uploadFileUsingFTP (ByVal CompleteFTPPath As String, ByVal CompleteLocalPath As String,Optional ByVal UName As String="" ,Optional ByVal PWD As String="" ) 
     
    'Créer un objet de requête FTP et Specfiy un chemin complet '
      Dim reqObj As FtpWebRequest = WebRequest.Create(CompleteFTPPath)
     
     
    'Appel d une méthode de FileUpload Object Request FTP '
      reqObj.Method = WebRequestMethods.Ftp.UploadFile 
     
    'Si vous voulez accéder à Resourse protégées Vous devez donner Nom d utilisateur and PWD et PWD '
      reqObj.Credentials = New NetworkCredential(UName, PWD)  
     
    'Objet FileStream lire le fichier de Local Drive Local Drive '
      Dim streamObj As FileStream = File.OpenRead(CompleteLocalPath) 
     
    'File Store dans un tampon '
      Dim buffer(streamObj.Length) As Byte 
     
    'Read File from Buffer «Lire un fichier de mémoire tampon '
      streamObj.Read(buffer, 0, buffer.Length) 
     
    'Fermer objet FileStream définir sa valeur à rien '
      streamObj.Close() 
      streamObj = Nothing 
     
    'Envoyer un fichier à définir son objet ftp://localHost/ à rien '
      reqObj.GetRequestStream().Write(buffer, 0, buffer.Length) 
      reqObj = Nothing 
     
    End Sub
    C'est a dire qu'il n'attend meme pas le clic pour entrer dans la fonction
    Et c'est marqué NULL à la fin du fichier

  3. #23
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    J'ai vu cette fonction sur le net. Si ça marche tant mieux.

    Ce qu'il faut savoir! En l'état et en VB, le code de ma fonction ne permet pas d'envoyer des fichiers plus petit que la taille du buffer 2048bits. Si ton fichier a une taille de moins de 2048bits tu ne rentreras pas dans la boucle while.

    Pourquoi? Le code VB teste la taille du buffer avant de lire le morceau du fichier est affecter la nouvelle valeur à "buffer". Donc le test "while" faux.

    Pourquoi ce test? Ce code envoi le fichier par morceaux de la taille du buffer au lieu de tout d'un bloc. C'est plus rapide. Ce que ne fait pas la fonction que tu as trouvé.

    Pour les fichiers plus petit? Il faudrait faire quelques modifications à cette fonction. Changer le type de boucle ou faire des tests préalables sur la taille du fichier pour soit le lire par morceaux (actuellement) ou en entier.

    C'est dingue pourquoi les grand développeurs sont toujours plongés dans le C# au d&triment de VB? Vous êtes sûrs que vous nous cachez rien?
    Au moment d'apprendre le .Net j'avais le choix entre C# et VB. J'ai choisi C# parce que plus répandu, plus d'offres d'emploi, moins verbeux que le VB (beaucoup de mots "inutiles" en VB), plus "pro" en apparence. En pratique, beaucoup d'autres langages importants ont un peu la même syntaxe que le C# (Javascript, java, C et C++). Du coup, les développeurs l'adoptent plus facilement. De plus, C# est beaucoup plus strict que VB. C# est sensible à la casse: "machaine" et "Machaine" sont deux variables différentes.
    Il y a surement beaucoup de débats animés entre les pro VB et C#

    A+

  4. #24
    Débutant   Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Points : 213
    Points
    213
    Par défaut
    Je suis amoureux de ton génie Immobilis
    Pour les fichiers plus petit? Il faudrait faire quelques modifications à cette fonction. Changer le type de boucle ou faire des tests préalables sur la taille du fichier pour soit le lire par morceaux (actuellement) ou en entier.
    Donc si je te suis t'avais compris le problème depuis?
    Mais alors aide moi à le modifier,en prendra en compte des fichiers de 1ko jusqu'à 10Mo.
    De toute évidences j'atteindrai cette taille rarement et surtout que ce soit lent ou rapide cela m'importe peu du moment que sa fonctionne

    Donc je tente de le modifier afin de voir comment je peux l'adapter!
    PS: Sa me gène pas de lire en entier directement

  5. #25
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par SonnyFab Voir le message
    Donc si je te suis t'avais compris le problème depuis?
    Ban j'ai un peu regardé et essayé de comprendre.
    Citation Envoyé par SonnyFab Voir le message
    Mais alors aide moi à le modifier,en prendra en compte des fichiers de 1ko jusqu'à 10Mo.
    Euuuh...
    Citation Envoyé par SonnyFab Voir le message
    Donc je tente de le modifier afin de voir comment je peux l'adapter!
    Ah j'aime mieux ça
    Citation Envoyé par SonnyFab Voir le message
    PS: Sa me gène pas de tout envoyer directement
    Euh moi si. J'ai l'air comme ça, mais je ne ferai pas ton boulot

    A+

  6. #26
    Débutant   Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Points : 213
    Points
    213
    Par défaut
    Mais y'a des fichiers de plus de 2 ko (2Mo) que j'ai tenté d'envoyer qui apparaissent toujours vide sur le server.
    J'ai aussi modifié afin de mettre la taille minimale à 1ko:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim buffer As Byte() = New Byte(1023) {}
    Toujours rien!

  7. #27
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par Immobilis Voir le message
    Bon apparemment, il faut prendre certaines précautions en VB. Voici un code VB qui marche
    Tu as repris ce code exactement et ça ne marche pas avec un fichier de 2Mo?

  8. #28
    Débutant   Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Points : 213
    Points
    213
    Par défaut
    Tu as repris ce code exactement et ça ne marche pas avec un fichier de 2Mo?
    Oui!
    Attends un peu s'il te plait je crois que je touche le but

  9. #29
    Débutant   Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Points : 213
    Points
    213
    Par défaut
    Si vous cherchez un disciple oh seigneur Immobilis contacter moi
    Sa marche ton code avec une légère modification:
    Dim buffer As Byte() = New Byte(0) {}
    Enfait comme tu m'as expliqué que le code ne rentrait que dans la boucle while pour des fichiers de plus de 2ko akors j'ai mis le barre à ... 0!
    Enfin juste pour éssayer et hop c'est passé

    Alors là que dire! Chapeau Immobilis
    J'ai pas encore testé celle de mon application parceque j'ai un problème de réseau en interne mais je te donne la suite, déja que les tests basiqes sont encourageant

    Je me sens d'attaque à répondre à toutes les questions du forums

  10. #30
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 512
    Points
    9 512
    Par défaut
    Citation Envoyé par SonnyFab Voir le message
    Enfait comme tu m'as expliqué que le code ne rentrait que dans la boucle while pour des fichiers de plus de 2ko akors j'ai mis le barre à ... 0!
    Enfin juste pour éssayer et hop c'est passé
    Bizarre. A tester parce que il me semble qu'en C# cela reviendrait a demander au code d'envoyer le fichier par block de taille 0. Pas très logique. A tester.
    Citation Envoyé par SonnyFab Voir le message
    Alors là que dire! Chapeau Immobilis
    Disons qu'avec Visual Studio et le débuguer cela se voit tout de suite. Dès que tu peux télécharge le.

  11. #31
    Débutant   Avatar de SonnyFab
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 498
    Points : 213
    Points
    213
    Par défaut
    Bizarre. A tester parce que il me semble qu'en C# cela reviendrait a demander au code d'envoyer le fichier par block de taille 0. Pas très logique. A tester.
    T'es revenu de tes vacances immobilis? En tout cas j'aspère qu'elles ont été superbes...

    C'était juste pour confirmer que ton code modifié avec le 0 passe super bien j'ai fais tous les tests et même sur le server il passe.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [JSch] probleme d'envoi de fichier par ftp
    Par jerem721 dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 08/05/2009, 13h39
  2. Envoi de fichier par FTP mais nommé différent
    Par whorian dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/03/2009, 18h04
  3. Problème de téléchargement de fichier par FTP
    Par Xalex dans le forum Web & réseau
    Réponses: 3
    Dernier message: 01/09/2008, 18h01
  4. Problème de copie de fichier par FTP
    Par tpdm dans le forum AS/400
    Réponses: 3
    Dernier message: 31/07/2008, 16h37
  5. Probleme d'envoi de fichiers par FTP
    Par TheReturnOfMuton dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/06/2008, 12h03

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