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

C# Discussion :

Import fichier plat FTP [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Par défaut Import fichier plat FTP
    Bonjour,

    je me remets au C#, j'essaie de faire qqc de simple pour tester l'import d'un fichier de mon local sur un FTP perso.

    Le FTP perso fonctionne très bien, aucun soucis de ce coté là.
    Par contre, quand j'exécute ce bout de code, il me dit sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Stream requestStream = request.GetRequestStream();
    L'URI demandée n'est pas valide pour cette commande FTP.

    Quelqu'un pourrait il m'éclairer ?

    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
    using System;
    using System.IO;
    using System.Net;
    using System.Text;
     
    namespace Examples.System.Net
    {
        public class WebRequestGetExample
        {
            public static void Main()
            {
     
                // Get the object used to communicate with the server.
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://***.***.**.*");
                request.Method = WebRequestMethods.Ftp.UploadFile;
     
                // This example assumes the FTP site uses anonymous logon.
                request.Credentials = new NetworkCredential("****", "*****");
     
                // Copy the contents of the file to the request stream.
                StreamReader sourceStream = new StreamReader("C:\\test.txt");
                byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
                sourceStream.Close();
                request.ContentLength = fileContents.Length;
     
                Stream requestStream = request.GetRequestStream();
                requestStream.Write(fileContents, 0, fileContents.Length);
                requestStream.Close();
     
                FtpWebResponse response = (FtpWebResponse)request.GetResponse();
     
                Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
     
                response.Close();
            }
        }
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Il n'y a pas plus de détails dans l'exception ? InnerException par exemple ?

    Et as-tu essayé avec WebClient ? C'est nettement plus simple...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    using (WebClient wc = new WebClient())
    {
        wc.UploadFile("ftp://***.***.***.***/chemin/du/fichier.txt", @"C:\test.txt");
    }

  3. #3
    Membre très actif Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Par défaut
    je veux bien, mais ou est ce que je passe mes id de connexion avec cette méthode ?

    le but le voila, fournir a plein de client l'outil qui permettra d'envoyer et recevoir des fichier d'un dossier sur un FTP commun (avec un sous-dossier personnel par client)
    l'arborescence ressemblerai a ca:

    ftp//100.100.10.1
    --/Dossier clients
    ------/M_Dupond
    ------/M_Jean
    --/Autre dossiers

    chaque utilisateur aura un fichier .conf ac son projet avec des paramètres de connexion spécifique (id, mdp, URL etc).
    Les données qui sont dans ce fichier .conf seront passées en paramètre des méthodes du projet principal.
    Bref, ça c'est pour l'utilisation générale.

    Le module que je souhaite faire dans un premier temps, c'est le dépot d'un fichier sur le FTP dans le répertoire /Test.

    Donc ta méthode est bien, mais je ne peux pas définir d'identifiant de connexion, ni mdp.

  4. #4
    Membre très actif Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Par défaut
    Voici mon projet,
    j'ai trouvé ça sur internet, mais je reste toujours bloqué avec la même erreur

    dans une classe "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
    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
    66
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Net;
     
    namespace Module_FTP
    {
        public class FTP
        {
            public string Server { get; set; }
            public string Username { get; set; }
            public string Password { get; set; }
     
            public void Upload(string filePath, string inputFilePath)
            {
                Uri serverUri = new Uri("ftp://" + this.Server + "/" + filePath);
                if (serverUri.Scheme != Uri.UriSchemeFtp)
                { return; }
     
                FtpWebRequest myRequest = (FtpWebRequest)FtpWebRequest.Create(serverUri);
                myRequest.Credentials = new NetworkCredential(this.Username, this.Password);
                myRequest.Method = WebRequestMethods.Ftp.UploadFile;
     
                FileStream stream = File.OpenRead(inputFilePath);
                byte[] buffer = new byte[stream.Length];
     
                stream.Read(buffer, 0, buffer.Length);
                stream.Close();
     
                Stream reqStream = myRequest.GetRequestStream();
                reqStream.Write(buffer, 0, buffer.Length);
                reqStream.Close();
     
            }
            public void Download(string directory, string file)
            {
                Uri serverUri = new Uri("ftp://" + this.Server + "/" + directory + "/" + file);
                if (serverUri.Scheme != Uri.UriSchemeFtp)
                { return; }
     
                FtpWebRequest myRequest = (FtpWebRequest)FtpWebRequest.Create(serverUri);
                myRequest.Credentials = new NetworkCredential(this.Username, this.Password);
                myRequest.Method = WebRequestMethods.Ftp.DownloadFile;
     
                FtpWebResponse response = (FtpWebResponse)myRequest.GetResponse();
                Stream responseStream = response.GetResponseStream();
                FileStream fs = new FileStream("C:/" + file, FileMode.Create);
     
                byte[] buffer = new byte[2000];
                int read = 0;
     
                do
                {
                    read = responseStream.Read(buffer, 0, buffer.Length);
                    fs.Write(buffer, 0, read);
                    fs.Flush();
                } while (!(read == 0));
     
                response.Close();
                responseStream.Close();
                fs.Close();
            }
        }
    }
    Dans mon "program.cs"

    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Text;
     
    namespace Module_FTP
    {
        class Program
        {
            static void Main(string[] args)
            {
                FTP myFTP = new FTP{
     
                Server = "***.***.**.*",
                Username = "*****",
                Password = "*****"
            };
            //myFTP.Upload("Test", "C:/ftp/test.txt");
            myFTP.Download("Test", "test.txt");
            }
        }
    }

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Nako_lito Voir le message
    je veux bien, mais ou est ce que je passe mes id de connexion avec cette méthode ?
    Ah oui pardon, j'ai oublié ça...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    using (WebClient wc = new WebClient())
    {
        wc.Credentials = new NetworkCredential("****", "*****");
        wc.UploadFile("ftp://***.***.***.***/chemin/du/fichier.txt", @"C:\test.txt");
    }

  6. #6
    Membre très actif Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Par défaut
    ouais, j'avais fais ça aussi avant de reposter, tjrs le même soucis.

    j'ai vu sur les forum qu’apparemment on ne pourrait pas uploader derrière les proxy :s
    Meme si on regle la valeur du proxy a null. ... une idée ?

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Bizarre... Elle ressemble à quoi exactement ton URL ?

  8. #8
    Membre très actif Avatar de Nako_lito
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2008
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 793
    Par défaut
    prochaine étape, adapter a des liste de fichier dans un dossier et a des utilisateurs différents.

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

Discussions similaires

  1. [2005] Import fichier plat avec accent
    Par tornade69 dans le forum SSIS
    Réponses: 1
    Dernier message: 09/06/2011, 11h05
  2. Automatiser Import fichier plat
    Par mboubidi dans le forum Administration
    Réponses: 10
    Dernier message: 23/10/2010, 16h00
  3. Probleme import fichier plat en VBA
    Par spaukensen dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/07/2008, 21h16
  4. Import fichier.txt sur FTP vers MySql
    Par thiper dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 19/06/2006, 10h54
  5. Importation fichier plat vers Mysql
    Par xender dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/05/2006, 22h36

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