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

Zend Framework PHP Discussion :

Téléchargement de fichier [Débutant(e)]


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Par défaut Téléchargement de fichier
    Bonjour
    Je voudrais obliger mon utilisateur à enregistrer un fichier ou à l'ouvrir sans avoir accès au chemin où le fichier est stocké.
    Pour faire ceci. J'ai ecrit ce code dans mon controlleur(Le code a été simplifié au maximum)
    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
    public function modifAction ()
    {
    	$modif = $this->_request->getParam('nu', 0);
     
    		$modifexists = new cDetailsModifs();
    		$resultat = $modifexists->fetchRow($modifexists->select()->where('modif = ?',$modif));
    		if (!$resultat) {
    			$this->view->message="Aucune modification ne correspond à votre demande.";
    		    $this->view->erreur=true;
    		    return;
    		}else {
    			....
    			$dir='C:\sites\www\manufacturing\html\upload\modifs\\';
    			$this->view->fichier=$dir.$modif.$resultat->ext_fichier;
     
    		}			
     
     
     
    }
    Ensuite, j'ai mis dans mon view modif.phtml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    header("Content-type: application/vnd.ms-excel");
    header("Content-Disposition: attachment; filename=\'".$this->fichier."\'\"");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
    header("Pragma: public");
     
    ?>
    Lorsque je tape l'URI http://localhost/manufacturing/html/...f/nu/0022ext08, j'obtiens la boite de dialogue "Ouvrir, Enregistrer, Annuler' mais la page qui s'ouvre dans excel correspond réellement au contenu généré dans ma vue modif.phtml et non pas à mon fichier '0022ext08.xls'.

  2. #2
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Tu oublies tout simplement d'ajouter le contenu du fichier à ta vue

  3. #3
    Membre éclairé
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Par défaut
    Ok, mais est-ce que vous pouvez être plus précis svp?
    Comment faire?

  4. #4
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Il faut lire le contenu du fichier puis l'écrire vers le client.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    header("Content-type: application/vnd.ms-excel");
    header("Content-Disposition: attachment; filename=\'".$this->fichier."\'\"");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
    header("Pragma: public");
    file_get_contents( $this->fichier );
    ?>
    C'est un exemple, je ne suis pas un pro du php, il y a peut être mieux, mais là ça ne concerne plus le ZF en particulier.

    Bon courage.

  5. #5
    Membre éclairé
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Par défaut
    ça ne mache pas

  6. #6
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Citation Envoyé par ZIED Voir le message
    ça ne mache pas
    Explique moi ce que tu obtiens. Une erreur, toujours la même chose ?

  7. #7
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Citation Envoyé par ZIED Voir le message
    Lorsque je tape l'URI http://localhost/manufacturing/html/...f/nu/0022ext08, j'obtiens la boite de dialogue "Ouvrir, Enregistrer, Annuler' mais la page qui s'ouvre dans excel correspond réellement au contenu généré dans ma vue modif.phtml et non pas à mon fichier '0022ext08.xls'.
    C'est quoi ce contenu ?

  8. #8
    Membre éclairé
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Par défaut
    C'est un fichier Excel.

  9. #9
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    C'est à dire ? J'ai demandé le contenu, pas le type de fichier

    page qui s'ouvre dans excel correspond réellement au contenu généré dans ma vue modif.phtml
    Tu obtiens quoi exactement ?

  10. #10
    Membre éclairé
    Profil pro
    Chef d’entreprise
    Inscrit en
    Mars 2002
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef d’entreprise

    Informations forums :
    Inscription : Mars 2002
    Messages : 212
    Par défaut
    J'obtiens une page avec l'entête et le pied de page de ma vue.
    J'ai éliminé le code dans ce post.

  11. #11
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Limite les headers au minimum pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    header("Content-type: application/vnd.ms-excel");
     
    if (file_exists($this->fichier) && is_file($this->fichier) ) {
        echo file_get_contents( $this->fichier );
    }else {
        echo "Erreur fichier introuvable";
    }
    Essaye ce code.

Discussions similaires

  1. Téléchargement de fichier
    Par casafa dans le forum Web & réseau
    Réponses: 21
    Dernier message: 18/06/2009, 23h34
  2. Réponses: 5
    Dernier message: 08/12/2005, 20h13
  3. Téléchargement de fichiers par HTTP / FTP
    Par Gladiator dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 07/12/2005, 11h28
  4. Réponses: 5
    Dernier message: 05/11/2005, 17h53
  5. [SOAP][XML][C#.NET] Téléchargement de fichiers XML
    Par juniorAl dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 27/06/2005, 09h35

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