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 :

Exception "the requested uri is invalid for this ftp command"


Sujet :

C#

  1. #1
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut Exception "the requested uri is invalid for this ftp command"
    Bonjour à tous,

    Je viens à vous pour un problème qui commence à me courir sérieusement.

    Voilà la situation, pour le moment, tous les jours, je remonte via Filezilla, à la main, un fichier csv sur ma bécane, généré par un script .Net, sur un serveur FTP.
    Je voulais automatiser ça, mais j'obtiens l'eexception suivante:
    The requested uri is invalid for this ftp command
    Avec le code ci-dessous:

    Code csharp : 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
     
    // appel
    uploadFile("ftp://monServeur/", "c:/monFichier.csv");
    // fonction
    public void uploadFile(String pRemoteServerURI, String pLocalFileUri)
            {
                Uri remoteServerURI = new Uri(pRemoteServerURI);
                Uri localFileUri = new Uri(pLocalFileUri);
                Stream sr = null;
                FileStream fs = null;
                if (remoteServerURI.Scheme != Uri.UriSchemeFtp)
                {
                    Console.WriteLine("<<< EXCEPTION : C'est pas du FTP");
                }
                else
                {
                    if (localFileUri.Scheme != Uri.UriSchemeFile)
                    {
                        Console.WriteLine("<<< EXCEPTION : C'est pas un fichier local");
                    }
                    else
                    {
                        try
                        {
                            FtpWebRequest fwr = (FtpWebRequest)WebRequest.Create(remoteServerURI);
                            fwr.Method = WebRequestMethods.Ftp.UploadFile;
                            NetworkCredential cred = new NetworkCredential("monUser", "monPass");
                            fwr.Credentials = cred;
                            sr = fwr.GetRequestStream();
                            fs = File.Open(localFileUri.OriginalString, FileMode.Open);
                            byte[] buffer = new byte[fs.Length];
                            fs.Read(buffer, 0, (int)fs.Length);
                            sr.Write(buffer, 0, (int)fs.Length);
                            sr.Close();
                            FtpWebResponse fwp = (FtpWebResponse)fwr.GetResponse();
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("<<< EXCEPTION : " + ex.Message);
                        }
                        finally
                        {
                            if (sr != null)
                            {
                                sr.Close();
                            }
                            if (fs != null)
                            {
                                fs.Close();
                            }
                        }
                    }
                }
            }
    Le duo user/mot de passe est bon, le fichier est bien à l'adresse indiquée.

    Quand je me logge sur filezilla, dans host, je mets juste "monServeur". Mais si je ne mets que ça dans la chaine pour appeler ma fonction, ça m'envoie direct une URIFormatException. Et ceci dès la première ligne de la fonction, celle-ci:
    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    Uri remoteServerURI = new Uri(pRemoteServerURI);


    Comment je peux faire pour contourner ce problème? Quelqu'un a une idée?

    Merci d'avance!
    Comparez la qualité et le prix du matériel de bricolage ou de maison avant d'acheter : MatosMaison
    Le bouton ne masse pas les pieds, mais ça aide la communauté.

  2. #2
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Commence déjà par enlever le dernier / à ton uri

  3. #3
    Membre éclairé Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 612
    Points : 685
    Points
    685
    Par défaut
    Et modifie la ligne suivante comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FtpWebRequest fwr = (FtpWebRequest)FtpWebRequest.Create(remoteServerURI + "/" + Path.GetFileName(pLocalFileUri));

  4. #4
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut
    Bien vu

    Merci!
    Comparez la qualité et le prix du matériel de bricolage ou de maison avant d'acheter : MatosMaison
    Le bouton ne masse pas les pieds, mais ça aide la communauté.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/04/2010, 16h41
  2. Réponses: 4
    Dernier message: 14/04/2010, 11h38
  3. [FTP API org.apache.commons.net.ftp] Commande 'Quote'
    Par JnJp28 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 30/11/2007, 12h23
  4. MAPPING configuration error for request URI
    Par Turtle dans le forum JBuilder
    Réponses: 1
    Dernier message: 17/02/2005, 11h56

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