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

Langage PHP Discussion :

[Upload] Problème avec Force download


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de bannik
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2003
    Messages : 191
    Points : 192
    Points
    192
    Par défaut [Upload] Problème avec Force download
    Bonjour,

    je ne sait pas si mon probléme vient du php, du html ou de internet explorer:

    j'ai une application flash qui ouvre une popup.
    cette popup execute un code php pour forcer le téléchargement d'un fichier.
    Mon probléme est le suivant:
    la popup s'ouvre bien mais elle se ferme aussi tôt sans lancer le téléchargement.
    J'ai tenter de lancer le script php dirrectement par url et cela fonctionne parfaitement.

    J'ai aussi remarqué une chose. Si j'interromp le script de la popup (esc), elle ne se ferme pas et que je fait F5, le text du fichier à télécharger s'affiche dans la fenétre.

    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
     
    <?
    // required for IE, otherwise Content-disposition is ignored
    $string = "bla bla bla";  // this can be a variable string or a row from a sql query or something else...
       $ext = "txt";   // file extension
       $mime_type = (PMA_USR_BROWSER_AGENT == 'IE' || PMA_USR_BROWSER_AGENT == 'OPERA')
       ? 'application/octetstream'
       : 'application/octet-stream';
       header('Content-Type: ' . $mime_type);
       if (PMA_USR_BROWSER_AGENT == 'IE')
       {
          header('Content-Disposition: inline; filename="' . $filename . '.' . $ext . '"');
          header("Content-Transfer-Encoding: binary");
          header('Expires: 0');
          header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
          header('Pragma: public');
          print $string;
       } else {
          header('Content-Disposition: attachment; filename="' . $filename . '.' . $ext . '"');
          header("Content-Transfer-Encoding: binary");
          header('Expires: 0');
          header('Pragma: no-cache');
          print $string;
       }
    ?>
    merci de votre aide

  2. #2
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Si tu veux que le fichier soit téléchargé, il ne faut pas essayer de le mettre en inline.
    Ton problème viens peux être du fait que tu n'ai pas mis de content_length...

    Voici ce que j'utilise et qui fonctionne bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $MimeType = "application/octet-stream";
    if ($navigateur!="Mozilla") {	//IE et Opéra ne supporte pas le type mime standard
    	$MimeType = "application/octetstream";
    }				
     
    header("Content-Disposition: attachment; filename=\"".$_GET['filename']."\"");
    header("Content-Type: ".$MimeType."; name=\"".$_GET['filename']."\"");
    header("Content-Length: ".strlen($Message));
    echo $Message;

  3. #3
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    je suppose que tu as mis un javascript dans ta popup

    as-tu ajouté un sleep avant de faire le close car sinon tu ferme ta page avant l'exécution du script qui ouvre ton téléchargement.

    A+JYT

  4. #4
    Membre habitué Avatar de bannik
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2003
    Messages : 191
    Points : 192
    Points
    192
    Par défaut
    j'ai testé ton code, et le probléme est le meme, la fenetre se ferme aussitot ouverte.Le script fonctionne lorsqu'il n'est pas lancé en popup. Trés bizard car je ne donne pas d'instruction de fermeture pour cette popup. J'ai quand meme remaqué avant qu'elle ne se ferme(1/4 de seconde ouverte) que dans la barre détat, un icon apparait, un bouclier avec un '!'. Ca resemble bcp à un blocage de firewall mais il est désactivé. Le bloqueur de popup est lui aussi désactivé.

    je suppose que tu as mis un javascript dans ta popup

    as-tu ajouté un sleep avant de faire le close car sinon tu ferme ta page avant l'exécution du script qui ouvre ton téléchargement.
    non il n'y a aucun javascript, juste les headers ecrits par le php..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
    $message="xcvdfvqsdefqsdfqsdfqsdf";
    $MimeType = "application/octet-stream";
    if ($navigateur!="Mozilla") {   //IE et Opéra ne supporte pas le type mime standard
       $MimeType = "application/octetstream";
    }            
     
    header("Content-Disposition: attachment; filename=\"".$_GET['filename']."\"");
    header("Content-Type: ".$MimeType."; name=\"".$_GET['filename']."\"");
    header("Content-Length: ".strlen($Message));
    echo $Message;
    ?>
    ceci est le code en entier de la page.

    la page est ouverte par la fonction popup javascript, j'ai aussi testé avec window.open avec le meme résultat.

  5. #5
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Mon code fonctionne bien et est aussi sur un window.open.
    Je n'ai pas ce problème donc je pencherais aussi pour un bloqueur de popup de ton côté....

  6. #6
    Membre habitué Avatar de bannik
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2003
    Messages : 191
    Points : 192
    Points
    192
    Par défaut
    Je n'ai pas de bloqueur de popup. J'utilise d'autres popup dans mon appli qui fonctionne.

    j'ai remplacé mon script de download par une alert javascript, et là l'alert s'execute et la fenetre ne se ferme pas. Idem avec un siple affichage de text.

    Je penserait bien à une config serveur, mais laquelle permetrait d'ouvrir des popup, de modifier les header mais pas de faire les deux en meme temp...
    En plus ca ne doit pas etre ca car j'utilise FPDF, qui ouvre une popup et modifie les header sans probléme...

    C'est lourd, j'ai vaiement besoin de telecharger un fichier...

  7. #7
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    Tu n'es pas obligé de le mettre dans un popup, si ta page s'appelle download.php, tu peux faire un <a href='download.php'>Téléehcrager</a>.

    Je ne pense pas qu'il y ai d'interet de l'ouvrir dans un popup, donc si tu essai avec un a href tout con de l'ouvrir dans la même fenetre , ca fonctionne nickel.

  8. #8
    Membre habitué Avatar de bannik
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2003
    Messages : 191
    Points : 192
    Points
    192
    Par défaut
    j'ai trouvé.
    Pour voir le probléme, j'ai du charger un document html qui remplace la page par le script de download....
    En fait, c'est internet explorer qui bloque le téléchargement de fichier.
    Maintenant, il affiche une bande en haut de la fenetre qui dit: "Pour protéger votre sécurité, IE a bloqué le téléchargement..." Le con....
    Bon, maintenant ca roule, merci de votre aide.

  9. #9
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    il suffit de mettre un href

    une fenêtre qui s'ouvre avec un header attachment se ferme immédiatemet

    un lien avec un attachment n''ouvre pas de nouvelle page mais lance le téléchargement donc pas besoin de popup ni de target
    A+JYT

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

Discussions similaires

  1. [Upload] problème avec move_uploaded_file
    Par botambaoaks dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2007, 14h18
  2. [Upload] Problème avec l'upload : Pas de fichier tmp !
    Par commedab dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2007, 13h38
  3. [Upload] problème avec is_uploaded_file
    Par loopsy dans le forum Langage
    Réponses: 4
    Dernier message: 31/01/2007, 18h57
  4. [Upload] Problème avec move_uploaded_file
    Par baleiney dans le forum Langage
    Réponses: 2
    Dernier message: 25/12/2006, 18h59
  5. [Upload] Problème avec un move_uploaded_file
    Par Death83 dans le forum Langage
    Réponses: 14
    Dernier message: 23/04/2006, 20h38

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