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 :

Générer la fenêtre "téléchargement de fichier"


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut Générer la fenêtre "téléchargement de fichier"
    Bonjour tout le monde !

    Voila, je travaille sur un projet web et j'ai besoin de générer un téléchargement de fichier.

    J'ai trouvé du code sur le forum donc voici l'adaptation à mon cas.
    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
     
    string path = Server.MapPath("");
    FileInfo fileInfo = new FileInfo(path + "/App_Data/fichier1.txt");
    FileInfo fileInfo = new FileInfo(@"C:\temp\fichier1.txt");
     
    byte[] buffer = new byte[2048];
    int block;
     
    using (FileStream fs = File.OpenRead(fileInfo.FullName))
    {
             while ((block = fs.Read(buffer, 0, buffer.Length)) > 0)
             {
                      Response.OutputStream.Write(buffer, 0, block);
             }
    }
     
    this.Page.Response.ClearHeaders();
    this.Page.Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", fileInfo.Name));
    this.Page.Response.End();

    Ce code fonctionne, j'ai bien la fenêtre windows qui me demande d'ouvrir ou télécharger le fichier, mais ca ne me suffit pas .

    J'ai dans un cas précis, besoin que le bouton "ouvrir" soit activé automatiquement, cad qu'il faut que dès que ce code se déclenche, il fasse l'ouverture automatiquement, comme si j'avais cliqué moi même sur le bouton "ouvrir".

    Avez vous des idées plz ?

    merci d'avance

  2. #2
    Membre éclairé Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Par défaut
    Salut Freud44,
    -> si ton fichier est un fichier texte, pourquoi ne mets-tu pas le contenu dans un div ?
    -> si ce n'est pas le cas, as-tu essayé les balises EMBED ou OBJECT qui te permettent d'intégrer des objets dans ta page ?

    bye
    Nico

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    Le fichier txt est un exemple.

    Il faut que ce soit valable pour d'autres types de fichiers, le but au final étant que lorsque ma page s'ouvre, automatiquement, un lien vers un fichier (passé en paramètre) est téléchargé (via la fenêtre de téléchargement) et ouvert directement avec le programme associé.

    Fred

  4. #4
    Membre éclairé Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Par défaut
    Qu'en est-il de ma deuxième partie de réponse :
    Citation Envoyé par Nicopilami Voir le message
    -> si ce n'est pas le cas, as-tu essayé les balises EMBED ou OBJECT qui te permettent d'intégrer des objets dans ta page ?
    bye
    Nico

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    C'est une solution, mais elle ne m'intéresse pas,

    Ce que j'ai besoin de re-créér, c'est l'équivalent d'un clic sur un lien hypertexte pointant sur un fichier texte (par exemple) , et qui ouvre automatiquement le programme associé.

    Donc intégrer l'objet à la page n'est pas ce que je veux faire.

    Il faut que lorsque ma page web s'ouvre, que le téléchargement du fichier se fasse, et que juste après, le programme associé s'ouvre.

    J'ai déja reussi à lancer le téléchargement avec la fenêtre de prompt windows, mais j'arrive pas à lancer automatiquement l'ouverture du fichier.

  6. #6
    Membre éclairé Avatar de Nicopilami
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur sécurité

    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Par défaut
    Le problème ici est que tu veux mélanger des actions serveur (création du fichier) et coté client (clic pour ouverture du lien) ce qui est problématique du coté de la sécurité, mais souvent faisable en utilisant le JS;

    En revanche, ici, que fais-tu si l'extension n'est pas connue du coté serveur (ou client ?), toujours pour raison de sécurité, tu ne pourras de toutes façons pas ouvrir automatiquement une application sur le poste client, mais par contre, il te seras possible de l'afficher dans une fenetre de navigateur web. (d'où ma suggestion de la balise OBJECT)

    Tout au plus, tu peux lui faire ouvrir l'objet dans une nouvelle fenetre en lui envoyant le type de fichier dont il s'agit en en-tete HTTP, mais je ne pense pas que cela corresponde à la totalité de tes attentes...

    Tu as un post qui pourrait peut-etre un peu t'aider ici, mais c'est en VB.NET...

    en gros, utiliser un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim fichier As String = <votre fichier texte>
    Dim repertoire As String = <repertoire serveur où est stocké le fichier>
    Dim fichier_info As New System.IO.FileInfo(repertoire & fichier)
    Response.Clear() ' efface les flux du tampon
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + fichier_info.Name)
    Response.AppendHeader("Content-Length", fichier_info.Length.ToString()) ' Evite de rajouter des infos indésirables
    Response.ContentType = "application/octet-stream"
    Response.Flush()
    Response.WriteFile(fichier_info.FullName)
    Response.End()
    pour spécifier le type de fichier dont il s'agit, pour l'afficher dans un DIV ou autre element HTML

    bye
    Nico

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 362
    Par défaut
    Mes extensions sont connues coté client, puisqu'il s'agit de formats tels que tifs,.doc et pdf. Et elles ne changeront pas.

    Tout en sachant que mes postes clients possèdent déja les programmes associés. Je n'aurai quasiment jamais le cas ou l'utilisation de OBJECT sera nécessaire.

    Je regarde de suite ton lien et essaies de coder quelque chose pour voir.

    merci

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/02/2008, 17h49
  2. Réponses: 6
    Dernier message: 08/08/2006, 09h14

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