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 :

Forcer le téléchargement


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut Forcer le téléchargement
    Ré-édit plus clair p-e...

    En fait ce que je veux faire c'est après l'affichage graphique dans une page
    ouvrir un download dialogue pointant sur un pdf que je viens de généré..(selon le clique de l'usager)
    comment je fais, puisque comme j'ai des sortie vers l'explorateur, je ne peux pas me servir des header..
    merci

    Bonjour
    j'ai un script de téléchargement dans une page pas d'affichage (download.php)

    J'utilise se script la plupart du temps dans un lien du genre
    "cliquer ici pour télécharger le pdf" en lui passant un chemin d'accès en parametre et le nom de fichier
    tout fonctionne

    Ce que je veux faire maintenant
    Dans la page (pageFeuille.php)
    J'ai une feuille de travail, l'utilisateur peut soir faire imprimer 1 seule entrée ou encore tout la feuille de travail
    J'ai donc 2 boutons qui font appel à une page(printFeuilleTravail.php) qui génère un document pdf en fonction du choix de l'utilisateur

    Une fois le script de formattage du pdf effectué, je le redirige vers pageFeuille.php...
    Mon post est le suivant, que j'arrive sur la page pageFeuille.php, comment est-ce que je fais pour forcer le téléchargement automatiquement du pdf que je viens de faire?

    Est-ce que je dois copier-coller mon script de download...(ca m'ennuie un peu car j'ai déjà une page qui fait ce code)
    Ou
    Est-ce que je peux appeler cette page directement...(ce que j'aimerais faire en fait)
    La solution 2 me pose probleme, car je ne sais pas comment faire pour inclure ce script et forcer directement la fenetre de téléchargement

    Des idées?

  2. #2
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Bon j'ai fait quelque trucs pour contourner
    mais encore moins de succès

    je ne peux pas insérer un script de téléchargement directement dans mon code puisqu'il utilise les header et je suis dans une page d'affichage

    voilà pourquoi je voulais passer par mon script qui est dans une autre page
    j'ai essayé avec un require, ca fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(isset($flagPrintPDF) && $flagPrintPDF == 1){
      require('./download.php?type=pdf&file=feuilleDeTravail26.pdf&dossierPath='.$_SESSION['saveDirectory'].'FeuilleTravail/');
    }
    ca me fait un warning et une fatale erreur comme suit:
    Warning: main(./download.php?type=pdf&file=feuilleDeTravail26.pdf&dossierPath=D:GDRBD/FeuilleTravail/): failed to open stream: Invalid argument in C:\server\Apache2\htdocs\gdr\Page\feuilleDeTravail.php on line 637

    Fatal error: main(): Failed opening required './download.php?type=pdf&file=feuilleDeTravail26.pdf&dossierPath=D:GDRBD/FeuilleTravail/' (include_path='.;c:\php4\pear') in C:\server\Apache2\htdocs\gdr\Page\feuilleDeTravail.php on line 637
    si je place le code de la page download.php dans ma condition à la place du require...ben l'erreur est logique, cannot send output blabla à cause des header

    ya une autre facon de procéder???

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Oui, construit ton code intelligemment pour ne pas avoir à envoyer de header quand on demande un téléchargement

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 254
    Points : 304
    Points
    304
    Par défaut
    En javascript? (approximativement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function actionWhenLoaded()
    {
    <?php
      print('window.open("./download.php?type=pdf&file=feuilleDeTravail26.pdf&dossierPath='.$_SESSION['saveDirectory'].'FeuilleTravail/","_blank")\n');
    ?>
    }
    [...]
    <BODY onload="actionWhenLoaded()">

  5. #5
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Citation Envoyé par Mr N.
    Oui, construit ton code intelligemment pour ne pas avoir à envoyer de header quand on demande un téléchargement
    Et bien c'est une réponse qui m'avance énormément, merci

  6. #6
    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 130
    Points
    9 130
    Par défaut
    oui elle t'avance

    une page ne peux pas répondre deux chose en même temps
    alors tu en fait une pour le téléchargement et une pour l'affichage
    c'est aussi simple que ça

    A+JYT

  7. #7
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Et bien c'est justement ce que j'ai en fait
    j'ai ma page de téléchargement qui contient seulement le script de téléchargement que j'appel en passant en parametre le nom de fichier et le répertoire dans lequel il est contenu.
    cette page s'appelle download.php

    Mais je ne sais pas comment l'appeler à partir de la page feuilleTravail.php
    normalement je passe par un lien en ayant comme référence download.php ce qui fonctionne très bien
    mais là, ce que je veux faire est différent, j'aimerais faire un appel automatique (un peu comme si je mettais la référence dans le liens et déclanchais sont événement click quand je capte une variable GET

    Mais bon, je crois que c'st impossible alors j'ai passé par une autre solution que je ne trouve pas très belle en fait

    J'explique: dans le onload de ma page, je récupère l'url(en javascript) et je vais voir les variable passé, si celle que j'attend est présente, j'ouvre une fenetre modal avec 2 lien (télécharger le pdf ou fermer la fenetre), ca fonctionne bien, ma page principale continue de s'afficher au complet derrière

    Quand je click sur télécharger, ca fonctionne aussi, mais ca m'ouvre une 3e fenetre (1ere mon application, 2e la Modale et 3e, la page download.php de mon script de download)
    alors je ne sais pas, est-ce que c'est car je suis dans une fenetre modale que ca m'ouvre une 3e fenetre car en temps normal la référence dans le liens à ma page download.php n'ouvre pas de fenetre, ca fait seulement afficher la dialogbox de téléchargement

  8. #8
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Donc si je comprends bien
    on ne peut pas appeler une autre page lorsqu'on est dans une fenetre modale??
    si j'ai 2 liens comme suit dans ma page modale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    echo '
     <a href="./download.php?type=pdf&file='.$nomFichier'&dossierPath='.$saveDir.'">Version imprimable</a>
    <br><a href="#" onclick="javascript:window.close();">Fermer [X]</a>
    ';
    le clieck sur version imprimable m'ouvre une 3e fenetre (1-application + 2-modale + 3-telechargement) avec l'url suivant
    //localhost/site/Page/download.php?type=pdf&file=alerte.pdf&dossierPath=D:GDRBD/Alertes/
    download.php est ma page contenant le script de téléchargement seulement
    Dans cette 3e page...ma boite de dialogue de téléchargement s'affiche qui me permet d'ouvre ou enregistrer le document pdf...

    Le probleme est la 3e fenetre, je ne la veut pas, je voudrais que ca fonctionne comme un lien que je clique dans mon application, un lien identique comme le code plus haut, mais bon qui n'execute que le script de téléchargement sans m'ouvrir une fenetre de l'explorateur...

    Est-ce que c'est parceque je suis dans la fenetre modale que ca fait cela?
    car dans une popup normal (window.open) ca execute le script sans m'ouvrir une 3e fenetre...exactement comme je voudrais l'avoir...

    Je n'utilise pas le window.open car je veux forcer l'utilisateur a fermer la fenetre avant de poursuivre à remplir son formulaire...c'est une fenetre qui sert d'alert en fait la fenetre modale

    Merci pour votre aide et ou Autre manière de procéder

  9. #9
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    C'est quoi une fenetre modale ?

  10. #10
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    une popup ouvert avec showModalDialog()

    Mais je viens de m'appercevoir que ce n'est pas interpreter par ff, seulement par ie...
    en javascript l'appel est comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    window.showModalDialog("popupFlag.php","popupAlertAdresse",
    	"dialogWidth:800px;dialogHeight:520px;center:1;scroll:1;help:1;status:1");
    Ce qui est sympa c'est que la fenetre garde le focus, donc l'utilisateur ne peux aller clicker dans la fenetre de l'application principale, tant qu'elle n'est pas fermé

    Donc après m'etre acharner sur un probleme difficile a expliquer, j'en suis venu à me dire que le véritable probleme provenait de cette method showModalDialog()...
    alors je réitère ma question, est-ce qu'il y a une autre manière de faire cette popup, mais forcer l'utilisateur à fermer la popup avant de poursuivre dans l'application principale?

    Merci

  11. #11
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    J'ai trouvé une alternative à mon probleme
    merci de votre aide tout de même

    J'avais un double post en fait, et au bout de la ligne les probleme se sont confronté
    je laisse liens sur celui javascript qui n'est pas tout à fait résolu

    http://www.developpez.net/forums/sho...d.php?t=324134

    Bon weekend

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/06/2007, 16h27
  2. [PHP-JS] Forcer le téléchargement d'une image JPG
    Par Amnesiak dans le forum Langage
    Réponses: 5
    Dernier message: 10/11/2006, 00h50
  3. [Configuration] problème pour forcer le téléchargement d'un fichier
    Par All Bran dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 02/01/2006, 17h23
  4. Réponses: 1
    Dernier message: 08/09/2005, 12h01
  5. Réponses: 2
    Dernier message: 23/03/2005, 09h51

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