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 :

OUVRIR un fichier TYPE BLOB [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 151
    Par défaut OUVRIR un fichier TYPE BLOB
    Bonjour à tous,

    il s'agit d'un formulaire dans lequel le participant doit partager un document (input type file).

    Ce document peut être un PDF, WORD, JPEG....ou autre (c'est au choix du participant).

    L'idée est de récupérer ce fichier sur une autre page et le télécharger avec un simple clic.

    Sur MYSQL J'ai déclaré le type BLOB mais je n'arrive pas à l'ouvrir.

    J'ai fait un essais avec décodage binaire pour des fichiers PDF comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <object data="data:application/pdf;base64,<?php echo base64_encode( $donnee['monfichier']);?>" type="application/pdf" height="100%" width="100%">
    mais cela ne marche pas: je reçoit le message suivant "Erreur Échec de chargement du document PDF."

    Quelqu'un pour m'aider à résoudre ce problème , svp ? Je voudrais permettre aux participants d'envoyer n'importe quel type de documents et pouvoir les ouvrir avec un clic.

    MERCI BEAUCOUP

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 667
    Par défaut
    pour gérer des fichiers, il vaut mieux les enregistrer dans un répertoire et stocker uniquement le chemin du fichier dans la base de données.
    vous pouvez ensuite les lire en passant par php avec ce code par exemple :
    https://php.developpez.com/faq/?page..._forcedownload

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 151
    Par défaut
    Salut Mathieu,

    merci beaucoup.

    Seulement, ce n'est pas ce que je cherche. Tout ce que je souhaite est que l'on puisse ouvrir le fichier sans le télécharger (comme sur certains sites)

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 256
    Par défaut
    Si c'est pour des pdf, en fait ils sont téléchargés, c'est le navigateur qui est capable de l'ouvrir directement.

    Pourquoi tu utilises base64_encode ?
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 151
    Par défaut
    Bonsoir Chrtophe,

    En vérité, je souhaite pouvoir récupérer tous les types de fichiers (pdf, word, jpeg....etc), non seulement les PDF. Mais j'ai commencé par essayer avec les fichier PDF pour être sûr que cela fonctionne.

    J'ai utilisé "encode-64" car c'est la seule méthode que j'ai trouvé mais ça ne marche pas.

    Autrement, je ne sais quoi faire.
    Je suis bloqué.

    Merci de ton attention

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 256
    Par défaut
    Tu dois stocker ton fichier dans la base en l'état sans l'encoder.

    Ensuite la page devant récupérer les données sera qq chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <php
     
    // logique chargeant le blob en variable
    ...
    // fin chargement blob en variable
     
    header('Content-Type: application/pdf');
    header('Content-Disposition: attachment; filename="nom_fichier.pdf"');
    echo($contenu);
    ?>
    si le fichier n'est pas un pdf il faudra modifier le Content-Type. Le type de fichier doit être stocké dans la base, ou déduit du nom de fichier, qui devra aussi être stocké dans la base (ou crée arbitrairement si le nom de fichier n'a pas d'importance)


    Dans le bloc de logique de chargement du BLOB, tu devras avoir ta requête SQL, Si tu viens 'un formulaire, ses éléments devraient te permettre de savoir quel BLOB récupérer.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 151
    Par défaut
    Bonjour à tous,

    Merci Mathieu, Merci Chrtophe,

    Finalement j'ai opté pour l'envoi de documents dans un dossier (répertoire) que j'ai créé dans le serveur d'hébergement.

    Les documents sont téléchargés avec leurs nom de fichier NORMAL (je veux dire: le nom d'origine)

    Sur la page répertoire ou se trouvent les fichiers, chaque fichier est nommé: https/mon_site/page_repertoire/nom_fichier.(pdf, ou jpg ou autre)

    Lorsque je clique sur n'importe que fichier, il s'ouvre sans problème.

    CE QUE JE VOUDRAIS: ouvrir les fichiers depuis une autre page.

    J'ai créé un lien <a href> pour ouvrir le fichier.

    Lorsque je mets le nom d'un fichier précis (en lettres) tout se passe bien. Le fichier s'ouvre.

    PROBLEME:

    Comme j'ai beaucoup de fichiers (plusieurs membres) Je voudrais inclure le nom du $_POST ['nom_fichier'] dans lequel j'ai mis $_FILES['fichier']['filename'] et que je récupère de la base de donnée (type VARCHAR).

    à la récupération je reçois des noms de fichiers de type: /tmp/phpYgFpBy ou L3RtcC9waHA4T2JXZE malgré que le type dans la base de données est VARCHAR

    J'ai essayé avec baseName, j'ai essayé avec pathinfo. IMPOSSIBLE (peut-être l'ai-je mal utilisé !!!)

    MON SOUHAIT:

    Comment récupérer le nom du fichier en lettre avant le POST. Le même que celui qui s'inscrit après avoir choisi le fichier (VOIR IMAGE) ???

    Nom : Capture_envoi_fichier.JPG
Affichages : 697
Taille : 11,6 Ko

    MERCI BEAUCOUP DE VOTRE AIDE

  8. #8
    Membre confirmé
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2019
    Messages : 151
    Par défaut
    Enfin le problème est résolu
    Il fallait mettre $_FILES['fichier']['name'] dans le INPUT "nom_fichier" à la place de $_FILES['fichier']['filename']

    Merci à tous et surtout Chrtope et Mathieu

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

Discussions similaires

  1. [MySQL] Affichage Fichier JOINT (depuis table MySQL type BLOB) header content
    Par encore_php dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/04/2008, 16h57
  2. [Oracle] Enregistrer fichier dans un champs de type BLOB
    Par madevilts dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/01/2008, 08h46
  3. Ouvrir un fichier (type txt) et lire son contenu
    Par fafabzh6 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/09/2007, 14h17
  4. [JDBC]ouvrir un fichier pdf à partir d'un blob
    Par souletis dans le forum JDBC
    Réponses: 5
    Dernier message: 25/01/2007, 21h03
  5. [java][Oracle]Ouvrir un fichier(blob) avec le browser
    Par marsup54 dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 11/09/2003, 13h35

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