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 :

Response.AddHeader pas de download sur safari


Sujet :

ASP.NET

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Par défaut Response.AddHeader pas de download sur safari
    Bonjour,

    J'essais de faire marcher le download d'un fichier sur safari et rien à faire, la fenêtre s'ouvre mais la boite de dialogue ouvrir/enregistrer/annuler ne s'affiche pas.

    Le 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
                //vide le buffer
                Response.Clear();
                //utilise un buffer de sortie
                Response.BufferOutput = true;
     
                // demande ouvrir enregistrer annuller
                Response.AddHeader("Content-Disposition", "inline; filename=" + Server.HtmlEncode(fileName));
                // ajoute au header la longueur du fichier
                Response.AddHeader("Content-Length", excelFile.Length.ToString());
                // la page expire dessuite
                Response.Expires = 0;
                // retire les informations en cache
                Response.ExpiresAbsolute = DateTime.Now;
                // désactive le cache
                Response.Cache.SetNoStore();
                Response.Cache.SetCacheability(HttpCacheability.NoCache);
                Response.CacheControl = "no-cache";
     
     
                // Format Excel 2007
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
     
                //Response.OutputStream.Write(excelFile, 0, excelFile.Length);
                for (int i = 0; i < excelFile.Length; i++)
                {
                    // écriture byte à byte du flux de sortie
                    Response.OutputStream.WriteByte(excelFile[i]);
                }
                // envoie de toutes les sorties bufferisées au client
                Response.Flush();
                // ferme le socket de connexion 
                Response.Close();
                // envoie le EndRequest event
                Response.End();
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Par défaut
    Bonjour

    As tu essayé Response.WriteFile(fileName), tout simplement ?


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Par défaut
    Bonjour,

    J'ai essayé toutes les méthodes write, j'ai gardé celle-ci car j'ai un tableau de byte à envoyer. (ça m'évite des conversions)

    Ca marche sous IE, Firefox, pas sous Safari.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Par défaut
    Bonjour,

    as-tu regardé dans la fenêtre de téléchargement

    je suis sur mac, et safari n'ouvre pas de fenêtre comme avec IE Safari ou Chrome

    pour avoir la fenêtre il faut personnaliser Safari (click droit dans la barre)

    Cordialement

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Par défaut
    Bonjour,

    J'ai vérifié la fenêtre de téléchargement, le fichier ne s'y trouve pas.

    Il doit y avoir quelque chose dans le Header qui ne va pas pour safari car ça marche sur mac avec firefox.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Par défaut
    Bonjour,

    j'ai repris ton header que j'ai collé dans une de mes procédures (sauf l'encodage du nom du fichier)

    j'exporte un gridview dans un tableau (via la classe gridviewexportutil que tu peux trouver sur le net)
    le téléchargement a bien fonctionné

    la différence c'est que j'envoi via un write, mais à mon avis ça doit pas joué, à tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HttpContext.Current.Response.Write("xxxx");

  7. #7
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Par défaut
    Bonjour,

    J'ai essayé plusieurs méthode write, et ça ne marche pas, tu as quelle version de safari?

  8. #8
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    voici une méthode que j'ai écrite pour télécharger des fichiers par contre j'ai pas testé sur safari
    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
    /// <summary>
        /// Fonction qui permet de télécharger un fichier sur le serveur grâce a son url
        /// </summary>
        /// <param name="urlFichier">est le chemin du fichier sur le serveur</param>
        private void telechargement(string urlFichier)
        {
            // On récupère les informations sur le fichier
            FileInfo file = new FileInfo(urlFichier);
            // On efface le response
            Response.Clear();
            // On ajoute les entêtes pour le fichier
            Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
            Response.AddHeader("Content-Length", file.Length.ToString());
            Response.ContentType = "application/octet-stream";
            // On lance le téléchargement
            Response.WriteFile(file.FullName);
            // On ferme le response
            Response.Flush();
            Response.Close();
        }

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur ASP.Net - disponible pour des missions
    Inscrit en
    Septembre 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur ASP.Net - disponible pour des missions

    Informations forums :
    Inscription : Septembre 2008
    Messages : 151
    Par défaut
    safari 5.1.2

  10. #10
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2011
    Messages : 28
    Par défaut
    Je teste sur la version 5.0.5.

Discussions similaires

  1. Response.AddHeader pas de download sur safari
    Par Nico1383 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 09/03/2012, 09h09
  2. Pourquoi mon frame ne fonctionne pas sur Safari 3.0.4?
    Par joecool2005 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/02/2008, 17h36
  3. Réponses: 1
    Dernier message: 28/03/2007, 19h20
  4. Réponses: 2
    Dernier message: 28/03/2007, 18h50
  5. [javascript] Ne fonctionne pas sur Safari
    Par sanosuke85 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/03/2007, 09h20

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