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 :

insert LONGBLOB d'un fichier pdf [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut insert LONGBLOB d'un fichier pdf
    Bonjour à tous,

    j'ai un formulaire qui permet d'uploader des fichier pdf. Les fichier sont ensuite enregistrés au format LONGBLOB, dans une base de données MySQL.

    Tout ça fonctionne bien, en local sur easyPhp (5.3.9)
    Dès que je le met en production, sur un serveur 1and1, ça se complique...

    Ca fonctionne pour certains fichiers, et pour d'autre, lorsque j'ouvre le PDF, j'ai le message "le fichier est endommagé".

    voila le code pour la class "document"
    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
     
    <?php
    class document {
    	var $id_document;
    	var $fichier_nom;
    	var $fichier_blob;
     
    	function nouveau() {
    		$sql = "INSERT INTO `documentation` (fichier_blob, fichier_nom) VALUES (";
    		$sql.= "'" . addslashes($this->fichier_blob) . "', ";
    		$sql.= "'" . addslashes($this->fichier_nom) . "'); ";
     
    		if (! mysql_query($sql) ) return mysql_error();	
    		else return true;
    	}
    }	
    ?>
    Voila le traitement de l'upload
    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
     
    <?php
    	$pdf_blob = '';
    	$pdf_taille = 0;
    	$pdf_type = '';
    	$pdf_nom = '';
     
    	$oDocument = new document;
     
    	if ( is_uploaded_file ($_FILES['fichier']['tmp_name']) ) { 
    		$pdf_blob = file_get_contents ($_FILES['fichier']['tmp_name']);
    		$pdf_type = $_FILES['fichier']['type'];
    		$pdf_nom = $_FILES['fichier']['name'];
     
    		if ( $pdf_type == "application/pdf" ) {
    			$oDocument->fichier_blob = $pdf_blob;
    			$oDocument->fichier_nom = $pdf_nom;
    			$oDocument->nouveau();
    		} 
     
    	} else { 
    		... traitement des erreurs
    	}
    ?>
    et le code de la page de download
    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
     
    <?php
    $oDocument = new document;
    $oDocument->id_document = $_REQUEST['id'];
    $oDocument->construit_document();
     
    $file_size = strlen($oDocument->fichier_blob);
    $file_name = $oDocument->fichier_nom;
    $file_content = $oDocument->fichier_blob;
     
    if (empty ($file_size)) {
    	$message = new message(55);
    	die( header("location: document.php?id=" . $_REQUEST['id'] ) );
    }
     
    header("Content-disposition: attachment; filename=" . $file_name); 
    header("Content-Type: application/force-download"); 
    header("Content-Transfer-Encoding: application/pdf"); 
    header("Content-Length: " . $file_size); 
    header("Pragma: no-cache"); 
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public"); 
    header("Expires: 0"); 
    ob_clean();
    flush();
    echo $file_content;
    ?>
    Toute proposition sera la bienvenue.
    Merci

    Gilou.

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    une question: pourquoi tu échappes un blob?

  3. #3
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    Bonjour,

    j'ai suivi les tutoriaux de developpez.com qui conseillent de le faire.
    Finalement, entre temps j'ai trouvé d'où venait l'erreur. une faute de frappe dans le reste du code

    bref. c'est réglé.
    A bientôt,

    Gilou.

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

Discussions similaires

  1. Insertion de fichiers PDF dans une table MySQL
    Par guipe dans le forum Langage
    Réponses: 1
    Dernier message: 13/05/2009, 18h02
  2. Insertion de fichier pdf
    Par ghatfan99 dans le forum Débuter
    Réponses: 1
    Dernier message: 10/03/2009, 17h54
  3. Insertion des fichiers pdf dans une base oracle
    Par arezki76 dans le forum SQL
    Réponses: 2
    Dernier message: 20/07/2007, 16h39
  4. insertion et récupération de fichiers pdf
    Par meghaoui dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/04/2007, 13h21
  5. Création fichier PDF : problème insertion texte HTML
    Par isazazou dans le forum Documents
    Réponses: 2
    Dernier message: 21/11/2006, 15h13

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