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

PHP & Base de données Discussion :

Forcer un téléchargement d'un fichier PDF [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Expert technique poste de travail
    Inscrit en
    Octobre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Expert technique poste de travail

    Informations forums :
    Inscription : Octobre 2013
    Messages : 27
    Points : 37
    Points
    37
    Par défaut Forcer un téléchargement d'un fichier PDF
    Bonjour à tous,

    Je bosse en ce moment sur un projet "simple" qui permettrait à un utilisateur d'upload un fichier, puis à d'autres de le télécharger.
    Jusqu'à maintenant cela fonctionnait, mais je me suis aperçu que mon navigateur "ouvrait" le fichier quand je voulais le télécharger.

    Et ce que j'aimerai faire, c'est qu'un fichier PDF, Image, MP3 ou même PHP puisse être téléchargé sans être ouvert par le navigateur, c'est à dire j'aimerai forcer le téléchargement.
    J'y suis parvenu mais cela "corrompt" mon fichier et il m'est impossible de l'ouvrir.

    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
    <?php
    //var_dump($_GET);
     
    //On sélectionne l'ID du fichier à télécharger
    $pathDoc = 'SELECT path FROM 
    `document` WHERE `id`='.$_GET['id'];
     
     
     
    //Execution de la requête et recuperation du chemin
    $reqDoc = mysql_query($pathDoc) or die('Erreur SQL !<br>'.$pathDoc.'<br>'.mysql_error());
    $rowPath = mysql_fetch_assoc($reqDoc);
     
    //On récupére le chemin du fichier stocké dans la DB
    $path = $rowPath['path'];
    var_dump($path,file_exists($path));
     
    /*$newPath = substr($path, 8); 
    var_dump($newPath);*/
     
    /*
    header("Content-Disposition: attachment; filename=\"" .($Path). "\"");
    header("Content-Type: application/force-download");
    readfile("" .($Path). "\"");
    header("Content-Length: " . filesize($Path));
    header("Connection: close");
    */
    ?>
    Voilà pour l'instant où j'en suis. Mais cela ne fonctionne pas. J'arrive à télécharger le fichier, mais celui ci est corrompu.

    Merci pour votre aide

  2. #2
    Membre émérite
    Avatar de Nothus
    Homme Profil pro
    aucun
    Inscrit en
    Juillet 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : aucun
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 200
    Points : 2 575
    Points
    2 575
    Billets dans le blog
    27
    Par défaut
    Sauf si tu as une obligation quelconque, évite d'enregistrer ton fichier dans une base de données. Préfère enregistrer son nom et ses détails, avec le fichier sur ton hébergement, dans un dossier spécial. Puis fait appel à celui-ci directement.

    EDIT : lu trop vite ! ^^

    Pour l'envoi au navigateur, vérifie que ça ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Disposition: attachment; filename="downloaded.pdf"');
    Et enfin, ton fichier peut être "corrompu" à cause de ton encodage.
    "En dehors des langages de la famille LISP et du modèle RDF, point de salut."

  3. #3
    Membre émérite
    Avatar de Nothus
    Homme Profil pro
    aucun
    Inscrit en
    Juillet 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : aucun
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 200
    Points : 2 575
    Points
    2 575
    Billets dans le blog
    27
    Par défaut
    Pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    readfile("" .($Path). "\"");
    Là tu ajoutes un guillemet à la fin de ton path... ???

    Que te retourne en ce moment ton var_dump?
    "En dehors des langages de la famille LISP et du modèle RDF, point de salut."

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Expert technique poste de travail
    Inscrit en
    Octobre 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Expert technique poste de travail

    Informations forums :
    Inscription : Octobre 2013
    Messages : 27
    Points : 37
    Points
    37
    Par défaut
    Bonjour Nothus,

    Je te remercie pour ton aide, pour ton information, mon fichier était bel et bien corrompu, j'ai utilisé un autre script très semblable et ça a l'air de bien fonctionner maintenant. Je passe donc mon problème en résolu, encore merci à toi !

    Cristalinz.

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

Discussions similaires

  1. Forcer le téléchargement d'un fichier .pdf
    Par Spanish_ dans le forum Langage
    Réponses: 2
    Dernier message: 25/06/2007, 18h53
  2. Réponses: 4
    Dernier message: 13/06/2007, 15h27
  3. Réponses: 2
    Dernier message: 30/05/2006, 15h07
  4. forcer le téléchargement - problème ouverture fichier
    Par grinder59 dans le forum Langage
    Réponses: 8
    Dernier message: 09/03/2006, 15h59
  5. [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, 16h23

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