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

Windows Forms Discussion :

download avec caractères spéciaux!


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut download avec caractères spéciaux!
    Bonjour à tous!
    J'ai un petit problème de download avec les caractères spéciaux (accents,& etc...)

    je déclare un objet de type webclient et j'utilise la méthode DownLoadFile()
    Mais lorsque le fichier contient un caractère spécial il me renvoi l'erreur 404 du fichier introuvable.

    Quelqu'un aurait il une explication ???

    Merci!

  2. #2
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    salut,

    est-ce que tu as essayé d'encoder tes caractères spéciaux ?

    Genre, un coup de HTMLEncode, ou un coup de renommage des & en & ?

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    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 : 44
    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
    Ce qui pose problème, c'est les caractères spéciaux dans le nom du fichier, je suppose ? (pas dans son contenu)
    Dans ce cas il faut utiliser la méthode UrlEncode (et non HtmlEncode) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    using System.Web; // il faut aussi référencer System.Web.dll
    ...
    string encodedUrl = HttpUtility.UrlEncode(url);
    WebClient wc = new WebClient();
    wc.DownloadFile(encodedUrl, localFilename);

  4. #4
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par tomlev Voir le message
    il faut utiliser la méthode UrlEncode (et non HtmlEncode)



    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut
    Merci pour les réponses!

    Tomlev j'ai testé ta solution néanmoins j'ai une erreur qui intervient :

    "Le chemin d'accès spécifié, le nom de fichier ou les deux sont trop longs. Le nom de fichier qualifié complet doit comprendre moins de*260*caractères et le nom du répertoire moins de 248*caractères."

    Pourtant mon 'encodeUrl' et mon localFileName contiennent moins de 200 caractères!

  6. #6
    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 : 44
    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 NejNej Voir le message
    "Le chemin d'accès spécifié, le nom de fichier ou les deux sont trop longs. Le nom de fichier qualifié complet doit comprendre moins de*260*caractères et le nom du répertoire moins de 248*caractères."

    Pourtant mon 'encodeUrl' et mon localFileName contiennent moins de 200 caractères!

    Tu peux montrer le contenu de ces 2 variables, ou c'est top-secret-défense-confidentiel ?

  7. #7
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 55
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Ce qui pose problème, c'est les caractères spéciaux dans le nom du fichier, je suppose ? (pas dans son contenu)
    Dans ce cas il faut utiliser la méthode UrlEncode (et non HtmlEncode) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    using System.Web; // il faut aussi référencer System.Web.dll
    ...
    string encodedUrl = HttpUtility.UrlEncode(url);
    WebClient wc = new WebClient();
    wc.DownloadFile(encodedUrl, localFilename);
    Salut,
    Désolé de m'initier comme ça mais ta remarque m'interpelle; J'arrive à transférer mes fichiers avec downloadFile mais quand je les récupère et que je veux traiter leurs contenus, tout est écrit sur une seule ligne! Alors que si je les transfère par FileZilla c'est ok.
    ... et tous les fichiers contiennent après l'extension .txt un cara ";" ...
    D'ou ma question : est-ce qu'un cara spécial dans le nom du fichier à transférer peut tout faire foirer?

    Si oui, connais-tu la solution ?

    Bonne soirée !

  8. #8
    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 : 44
    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 stever50 Voir le message
    Salut,
    Désolé de m'initier comme ça mais ta remarque m'interpelle; J'arrive à transférer mes fichiers avec downloadFile mais quand je les récupère et que je veux traiter leurs contenus, tout est écrit sur une seule ligne! Alors que si je les transfère par FileZilla c'est ok.
    ... et tous les fichiers contiennent après l'extension .txt un cara ";" ...
    D'ou ma question : est-ce qu'un cara spécial dans le nom du fichier à transférer peut tout faire foirer?
    Attention de pas tout mélanger... toi tu transfères des données à partir d'un serveur FTP, pas HTTP (enfin je suppose, puisque tu utilises FileZilla). Je sais pas si les règles sur les noms de fichier sont les mêmes qu'en HTTP.

    Pour le problème de "tout sur la même ligne" : essaie d'ouvrir le fichier avec WordPad ou quelque chose comme ça, tu verras qu'il y a bien plusieurs lignes ; c'est juste le bloc-note qui ne sait pas les afficher. C'est parce que la séquence de retour à la ligne est différente sous UNIX (\n) et Windows (\r\n). Normalement, quand tu transfères en FTP un fichier texte, tu passes en mode de transfert ASCII, qui gère la conversion des fins de ligne. Mais WebClient.DownloadFile ne permet pas de spécifier le mode de transfert, et par défaut je pense que c'est le mode binaire qui est utilisé. Le fichier est donc transféré tel quel, sans conversion des fins de ligne, d'où le résultat que tu obtiens... Essaie d'utiliser FtpWebRequest à la place de WebClient

  9. #9
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 55
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Attention de pas tout mélanger... toi tu transfères des données à partir d'un serveur FTP, pas HTTP (enfin je suppose, puisque tu utilises FileZilla). Je sais pas si les règles sur les noms de fichier sont les mêmes qu'en HTTP.

    Pour le problème de "tout sur la même ligne" : essaie d'ouvrir le fichier avec WordPad ou quelque chose comme ça, tu verras qu'il y a bien plusieurs lignes ; c'est juste le bloc-note qui ne sait pas les afficher. C'est parce que la séquence de retour à la ligne est différente sous UNIX (\n) et Windows (\r\n). Normalement, quand tu transfères en FTP un fichier texte, tu passes en mode de transfert ASCII, qui gère la conversion des fins de ligne. Mais WebClient.DownloadFile ne permet pas de spécifier le mode de transfert, et par défaut je pense que c'est le mode binaire qui est utilisé. Le fichier est donc transféré tel quel, sans conversion des fins de ligne, d'où le résultat que tu obtiens... Essaie d'utiliser FtpWebRequest à la place de WebClient
    Merci de ta réponse!
    Que j'ouvre mon fichier avec WordPad ou Notepad ne change rien [bizarre que FileZilla face correctement son boulot mais pas WebClient].

    J'utilise FtpWebRequest pour lister les fichiers [ListDirectory] dans le répertoire sur le server distant et je les traite un à un dans une boucle [en parcourant le stream].
    Mais je vais tester le téléchargement avec FtpWebRequest et je te redis.

Discussions similaires

  1. [DOM] Erreur parser fichier xml avec caractère spéciaux
    Par turcotm dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 19/06/2006, 09h01
  2. [MySQL] Problèmes avec caractères spéciaux
    Par brokengillou dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/04/2006, 17h02
  3. recupérer GET avec caractères spéciaux
    Par masseur dans le forum Langage
    Réponses: 11
    Dernier message: 03/01/2006, 11h37
  4. [RegEx] chaîne de caractères avec caractères spéciaux
    Par Kerod dans le forum Langage
    Réponses: 9
    Dernier message: 25/12/2005, 01h40
  5. Réponses: 3
    Dernier message: 11/10/2004, 17h26

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