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 :

control de téléchargement


Sujet :

ASP.NET

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Par défaut control de téléchargement
    Bonjour et meilleurs voeux,
    je suis en train de développer un site asp dans lequel des fichiers seront téléchargeable. Mais je sais pas très bien comment m'y prendre. J'ai écrit un code qui télécharge bien mon fichier, mais ne propose pas de répertoire ou le sauvegarder. J' ai répêcher sur le net un code pour faire ça mais je n'arrive pas à relier les deux.

    mon code:
    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
         ResourceManager rm = new ResourceManager("Resources.Resource", Assembly.Load("App_GlobalResources"));
            Byte[] tab = (Byte[])rm.GetObject("setup");
     
            using (FileStream file = new FileStream("setup.exe", FileMode.Create))
            {
                for (int i = 0; i < tab.Length; i++)
                {
                    file.WriteByte(tab[i]);
     
                }
     
                filInfo = new FileInfo(file.Name);
                lenght = file.Length;
     
            }
    code( que je comprends pas) qui est sensé permettre un bon téléchargemnt.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Page.Response.Clear();
            Page.Response.AppendHeader("Content-Disposition", "attachement;FileName=" + filInfo.Name);
            Page.Response.AppendHeader("Content-Lenght", lenght.ToString());
            Page.Response.ContentType = "application";
     
            Page.Response.WriteFile(filInfo.FullName);
            Page.Response.End();
    Je ne sais pas non plus si mettre mes fichiers téléchargeable dans les resources est la bonne méthode, ni si la gestion de la concurrence ne va pas poser pb.

    Pour toutes lumières , merci

  2. #2
    Membre émérite Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Par défaut
    Salut,

    jai pas bien compris ce que tu voulais faire.

    Si tu veux "envoyer" un fichier à l'utilisateur pour qu'il le telecharge sur sa machine, tu dois utiliser le code suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    fileName = "MonFichier.txt";
    filePath = "./DossierFichiers";
     
     
    Response.ContentType = "application/x-msdownload";
    Response.AppendHeader("Content-Disposition", "attachment; filename="+fileName);
    Response.TransmitFile(filePath + "/"+fileName);
    Response.End();
    filePath est le path permettant sur ton serveur d'acceder au fichier.

    Si tu veux recupérer un fichier que t'envoie un utilisateur, c'est plutot du coté du fileUpload

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Par défaut
    Merci pour ta réponse,
    oui c'est bien ça que je veux faire.Et tu mets ce code, brut dans un bouton?
    Parce que j'ai un problème, j'obtient l'erreur:
    ft JScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException: Impossible d'analyser le message reçu du serveur. Cette erreur peut avoir plusieurs causes possibles*: réponse modifiée par des appels à Response.Write(), filtres de réponse, HttpModules ou activation de trace du serveur.
    Détails*: Erreur d'analyse à proximité de 'Download Control v1.'.
    Alors je ne sais pas si c'est une erreur de path: j'ai pris un fichier texte installation.txt que j'ai mis à la racine de mon site et j'ai donc mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    filename= "installation.txt";
    path= "./";
    Suis-je bon?

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Par défaut
    Alors, ca a bien l'air d'être une erreur de path...Concrètement je ne comprends pas où est-ce que je dois mettre les fichiers que je veux proposer au téléchargement, aussi bien en mode debug sur ma machine de développement que plus tard, une fois sur l'hébergeur.
    Pour l'instant, je l'ai mis à la racine de ma solution.
    J'ai l'impression qu'il me manque un "rootpath" pour y accéder.
    merci pour toutes aides

  5. #5
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Si a la racine de ton site, tu as un repertoire monRep, dans ta page, il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //Recuperation du chemin
    string monPath = Server.MapPath("monRep/");
    //Utilisation d'un fichier
    System.IO.File.Exists(monPath  + "fichier.txt");
    a+

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Par défaut
    Alors je progresse, mais ça marche toujours pas

    ce code
    Code :
    //Recuperation du chemin
    string monPath = Server.MapPath("monRep/");
    //Utilisation d'un fichier
    System.IO.File.Exists(monPath + "fichier.txt");
    marche bien,merci et mes fichiers existent, mais j'ai toujours l'erreur.

    par contre j'ai testé avec un fichier que j'avais incorporé dans mes resources et là le message est légèrement différent il me dit
    ...erreur à proximité de
    et ensuite j'ai le début de mon texte, à savoir les trois premiers mots.
    Je ne comprends rien...
    J'ai vu que quelqu'un avait un problème similaire , et j'ai essayé le code de ce thread

    mais il me donne les mêmes erreur..

  7. #7
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Ton probleme ressemble à une mauvaise interpretation du fichier par le navigateur (en gros, le transfert marche mais le navigateur essaie d'interpreter le contenu du fichier et n'y arrive pas). Essaie de renommer le fichier en .dat par exemple ou .xls et verifie si tu c'est mieux

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Par défaut
    Nop, ca marche pas. Par contre effectivement en debuggant dans firefox je n'ai plus l'erreur...mais rien ne se passe.
    je remet mon code, qui se trouve directement sous le handler du click de mon bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    fileName = "Offre.txt";
    filePath =  Server.MapPath("App_GlobalResources/";
     
     
    Response.ContentType = "application/x-msdownload";
    Response.AppendHeader("Content-Disposition", "attachment; filename="+fileName);
    Response.TransmitFile(filePath +fileName);
    Response.End();
    merci

    ps:je précise que File.Exists (filePath+fileName) me renvoie bien true.

  9. #9
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Je viens de tester avec visual web developper 2010 et firefox et ca marche. J'ai bien une boite de dialogue qui me propose de telecharger le fichier. Et quand je le telecharge, il a bien le meme contenu que le fichier d'origine...

    Essaye de poster un bout de code qui reproduit le probleme (quelque chose de complet qui puisse etre copié collé pour reproduire). Le probleme ne vient peut etre pas d'ou tu penses...

  10. #10
    Membre émérite Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 717
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Response.ContentType = "application/x-msdownload";

    fais une recherche sur le net, tu devrais trouver le type correspondant aux fichiers textes

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Par défaut
    merci de vos réponses,hélas...
    En remplaçant le contentType par text/plain qui semble être bon pour les fichier des type txt , j'ai toujours l'erreur
    ft JScript runtime error: Sys.WebForms.PageRequestManagerParserErrorException: Impossible d'analyser le message reçu du serveur. Cette erreur peut avoir plusieurs causes possibles*: réponse modifiée par des appels à Response.Write(), filtres de réponse, HttpModules ou activation de trace du serveur.
    Détails*: Erreur d'analyse à proximité de ...
    et suis les trois premiers mots du text.(La longeur de la chaîne de caractère est la même suivant les fichiers textes.)

    mon code est strictement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    protected void Button2_Click(object sender, EventsArgs e)
     
    fileName = "Offre.txt";
    filePath =  Server.MapPath(@"DownLoadFiles/");
     
     
    Response.ContentType = "text/plain";
    Response.AppendHeader("Content-Disposition", "attachment; filename="+fileName);
    Response.TransmitFile(filePath +fileName);
    Response.End();
    }
    j'utilise IE8, qu'est ce qui peut clocher?

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Par défaut
    Je relance ce thread car je l'ai résolu en partie:
    Après avoir consulté le All-In-One Code Framework de microsoft je suis tombé sur un import export de fichier excel qui génére un lien pour télécharger le fichier excel.
    Le code est tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    hyperlink.NavigateUrl= "~dowloadFiles/nomFichier.xls";
    En faisant de même pour un fichier .msi, j'ai pu le télécharger sans problèmes.
    Par contree pour mon fichier texte, le navigateur ne me propose pas de le télécharger: il l'ouvre. Je ne vois pas ou forcer le téléchargement.

    merci pour tout conseils.

Discussions similaires

  1. Proposer un téléchargement
    Par chunly dans le forum Flash
    Réponses: 4
    Dernier message: 03/05/2006, 09h43
  2. [VB6] [Interface] Nbre de contrôles maxi dans une feuille
    Par Midou dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 13/10/2002, 16h09
  3. [VB6] [Interface] Tester le Type de Controle
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 16/09/2002, 09h51
  4. [controle] propriété read only
    Par Fizgig dans le forum Composants VCL
    Réponses: 6
    Dernier message: 28/08/2002, 10h30
  5. Rx Controls Gif animés
    Par toufou dans le forum Composants VCL
    Réponses: 6
    Dernier message: 23/08/2002, 14h09

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